Weboldal keresés

Squid proxykiszolgáló konfigurálása korlátozott hozzáféréssel és ügyfelek beállítása proxy használatára – 5. rész


A Linux Foundation Certified Engineer képzett szakember, aki rendelkezik a hálózati szolgáltatások telepítéséhez, kezeléséhez és hibaelhárításához szükséges szakértelemmel Linux rendszereken, és felelős a rendszer tervezéséért, megvalósításáért és folyamatos karbantartásáért. széles építészet.

Bemutatkozik a Linux Foundation Certification Program.

A sorozat 1. részében bemutattuk, hogyan kell telepíteni a squid-et, egy proxy-gyorsítótárazó szervert webes kliensek számára. Kérjük, olvassa el ezt a bejegyzést (az alábbi link), mielőtt továbblépne, ha még nem telepítette a squid-ot a rendszerére.

  1. 1. rész – A hálózati szolgáltatások telepítése és az automatikus indítás konfigurálása rendszerindításkor

Ebben a cikkben bemutatjuk, hogyan konfigurálhatja a Squid proxykiszolgálót az internet-hozzáférés biztosításához vagy korlátozásához, és hogyan konfigurálhat egy http-klienst vagy webböngészőt a proxykiszolgáló használatára.

Saját tesztelési környezet beállítása

Squid szerver
Operating System :	Debian Wheezy 7.5
IP Address 	 :	192.168.0.15
Hostname	 :	dev2.gabrielcanepa.com.ar
Ügyfélgép 1
Operating System :	Ubuntu 12.04
IP Address 	 :	192.168.0.104 
Hostname	 :	ubuntuOS.gabrielcanepa.com.ar
Ügyfélgép 2
Operating System :	CentOS-7.0-1406
IP Address 	 :	192.168.0.17 
Hostname	 :	dev1.gabrielcanepa.com.ar

Emlékezzünk arra, hogy leegyszerűsítve a webproxyszerver közvetítő egy (vagy több) ügyfélszámítógép és egy bizonyos hálózati erőforrás között, a leggyakoribb az internet-hozzáférés. Más szóval, a proxyszerver az egyik oldalon közvetlenül az internethez (vagy egy internethez csatlakozó útválasztóhoz), a másik oldalon pedig a kliensszámítógépek hálózatához csatlakozik, amelyek ezen keresztül érik el a világhálót.

Felmerülhet benned a kérdés, hogy miért szeretnék még egy szoftvert hozzáadni a hálózati infrastruktúrámhoz?

Íme a 3 legfontosabb ok:

1. A Squid a korábbi kérésekből származó fájlokat tárolja a jövőbeli átvitelek felgyorsítása érdekében. Tegyük fel például, hogy az kliens1 letölti a CentOS-7.0-1406-x86_64-DVD.iso fájlt az internetről. Amikor a kliens2 hozzáférést kér ugyanahhoz a fájlhoz, a squid át tudja vinni a fájlt a gyorsítótárából, ahelyett, hogy újra letöltené az internetről. Ahogy sejtheti, ezzel a funkcióval felgyorsíthatja az adatátvitelt olyan számítógépek hálózatában, amelyek valamilyen gyakori frissítést igényelnek.

2. Az ACL-ek (Hozzáférés-szabályozási listák) lehetővé teszik számunkra, hogy korlátozzuk a webhelyekhez való hozzáférést és/vagy figyeljük a hozzáférést felhasználónként. A hozzáférést korlátozhatja például a hét napja vagy a napszak vagy a domain alapján.

3. A webes szűrők megkerülését egy webproxy használata teszi lehetővé, amelyhez a kéréseket küldik, és amely visszaküldi a kért tartalmat az ügyfélnek, ahelyett, hogy az ügyfél közvetlenül az internetre kérné.

Tegyük fel például, hogy bejelentkezett a client1 fiókba, és a cége útválasztóján keresztül szeretné elérni a www.facebook.com webhelyet. Mivel a webhelyet a vállalat irányelvei blokkolhatják, ehelyett csatlakozhat egy webproxyszerverhez, és hozzáférést kérhet a www.facebook.com webhelyhez. A távoli tartalmat ezután ismét visszaküldi Önnek a webproxyszerveren keresztül, megkerülve a vállalat útválasztójának blokkolási szabályzatát.

A Squid konfigurálása – Az alapok

A Squid webproxy szerver hozzáférés-vezérlési sémája két különböző összetevőből áll:

  1. Az ACL-elemek olyan direktívasorok, amelyek „acl” szóval kezdődnek, és bármely kérés tranzakcióval szemben végrehajtott teszttípust képviselnek.
  2. A hozzáférési listaszabályok egy engedélyezés vagy megtagadás műveletből állnak, amelyet számos ACL-elem követ, és jelzi, hogy milyen művelet vagy korlátozás van. adott kérelemre érvényesítendő. A rendszer sorban ellenőrzi őket, és a listakeresés leáll, amint az egyik szabály egyezik. Ha egy szabálynak több ACL eleme van, akkor logikai ÉS műveletként kerül megvalósításra (a szabály minden ACL elemének egyeznie kell, hogy a szabály egyezés legyen).

A Squid fő konfigurációs fájlja a /etc/squid/squid.conf, amely ~5000 soros, mivel konfigurációs direktívákat és dokumentációt is tartalmaz. Emiatt létrehozunk egy új squid.conf fájlt, amely csak a konfigurációs direktívákat tartalmazó sorokat tartalmazza, az üres vagy megjegyzésekkel ellátott sorokat elhagyva. Ehhez a következő parancsokat fogjuk használni.

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

És akkor,

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

OR

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

Most nyissa meg az újonnan létrehozott squid.conf fájlt, és keresse meg (vagy adja hozzá) a következő ACL elemeket és hozzáférési listákat.

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

A fenti két sor az ACL elemek használatának alapvető példája.

  1. Az első szó, az acl, azt jelzi, hogy ez egy ACL elem direktívasor.
  2. A második szó, a localhost vagy a localnet, adja meg az irányelv nevét.
  3. A harmadik szó, ebben az esetben az src, egy ACL-elemtípus, amely az ügyfél IP-címének vagy címtartományának megjelenítésére szolgál. Megadhat egyetlen gazdagépet IP-cím (vagy gazdagépnév, ha valamilyen DNS-feloldás van megvalósítva) vagy hálózati cím alapján.
  4. A negyedik paraméter egy szűrési argumentum, amely „betáplálva” a direktívába.

Az alábbi két sor a hozzáférési lista szabály, és a korábban említett ACL direktívák kifejezett megvalósítását jelenti. Néhány szóval azt jelzik, hogy a http hozzáférést meg kell adni, ha a kérelem a helyi hálózatról (localnet) vagy a localhost-tól érkezik. Konkrétan mi a megengedett helyi hálózat vagy helyi gazdagép cím? A válasz: a localhost és a localnet direktívákban megadottak.

http_access allow localnet
http_access allow localhost

Ezen a ponton újraindíthatja a Squid programot a függőben lévő módosítások alkalmazásához.

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

majd állítson be egy kliensböngészőt a helyi hálózaton (esetünkben 192.168.0.104), hogy a proxyján keresztül hozzáférjen az internethez az alábbiak szerint.

Firefoxban

1. Lépjen a Szerkesztés menübe, és válassza a Beállítások lehetőséget.

2. Kattintson a Speciális, majd a Hálózat lapra, végül a Beállítások lehetőségre…

3. Jelölje be a Manuális proxykonfiguráció lehetőséget, és adja meg a proxyszerver IP-címét és azt a portot, ahol figyel. kapcsolatokhoz.

Megjegyzés, hogy a Squid alapértelmezés szerint a 3128-as porton figyel, de ezt a viselkedést felülírhatja a hozzáférési lista szerkesztésével > szabály, amely a következővel kezdődik: http_port (alapértelmezés szerint a http_port 3128).

4. Kattintson az OK gombra a módosítások alkalmazásához, és már mehet is.

Annak ellenőrzése, hogy az ügyfél hozzáfér-e az internethez

Az alábbiak szerint ellenőrizheti, hogy a helyi hálózati kliens eléri-e az internetet a proxyn keresztül.

1. Az ügyfélben nyisson meg egy terminált, és írja be:

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

Ez a parancs megjeleníti az ügyfél aktuális IP-címét (a következő képen a 192.168.0.104).

2. Ügyfélprogramjában egy webböngészővel nyissa meg az adott webhelyet (ebben az esetben linux-console.net).

3. A szerveren futtassa.

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

és élő nézetet kap a Squid szolgáltatáson keresztül kiszolgált kérésekről.

Hozzáférés korlátozása ügyfél által

Most tegyük fel, hogy kifejezetten meg akarja tagadni a hozzáférést az adott ügyfél IP-címéhez, miközben fenntartja a hozzáférést a helyi hálózat többi részére.

1. Határozzon meg egy új ACL direktívát a következőképpen (én ubuntuOS néven neveztem el, de tetszés szerint nevezheti el).

acl ubuntuOS src 192.168.0.104

2. Adja hozzá az ACL direktívát a localnet access listához, amely már létezik, de előtte egy felkiáltójellel. Ez azt jelenti, hogy "Internet-hozzáférés engedélyezése a localnet ACL direktívának megfelelő ügyfelek számára, kivéve azt, amelyik megfelel az ubuntuOS direktívának".

http_access allow localnet !ubuntuOS

3. Most újra kell indítanunk a Squid alkalmazást a változtatások alkalmazásához. Aztán ha megpróbálunk böngészni bármely webhelyre, azt találjuk, hogy a hozzáférés most meg van tagadva.

A Squid konfigurálása – Finomhangolás

A hozzáférés korlátozása domain és/vagy napszak/hét nap szerint

A Squid hozzáférésének domain szerinti korlátozásához a dstdomain kulcsszót használjuk az ACL direktívában, az alábbiak szerint.

acl forbidden dstdomain "/etc/squid/forbidden_domains"

Ahol a forbidden_domains egy egyszerű szöveges fájl, amely tartalmazza azokat a tartományokat, amelyekhez meg szeretnénk tagadni a hozzáférést.

Végül hozzáférést kell biztosítanunk a Squid számára olyan kérések esetén, amelyek nem felelnek meg a fenti irányelvnek.

http_access allow localnet !forbidden

Vagy talán csak a nap egy bizonyos szakaszában (10:00 és 11:00 között) szeretnénk engedélyezni a hozzáférést ezekhez a webhelyekhez, csak hétfőn (H), szerda (N) és péntek (N).

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

Ellenkező esetben az ezekhez a domainekhez való hozzáférés blokkolva lesz.

A hozzáférés korlátozása felhasználói hitelesítéssel

A Squid számos hitelesítési mechanizmust (Basic, NTLM, Digest, SPNEGO és Oauth) és segédprogramokat (SQL adatbázis, LDAP, NIS, NCSA, hogy csak néhányat említsünk) támogat. Ebben az oktatóanyagban az alapvető hitelesítést fogjuk használni az NCSA segítségével.

Adja hozzá a következő sorokat a /etc/squid/squid.conf fájlhoz.

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

Megjegyzés: A CentOS 7 rendszerben a squid NCSA beépülő modulja a következő helyen található: /usr/lib64/squid/basic_nsca_auth, ezért változtassa meg ennek megfelelően a fenti sorban.

Néhány pontosítás:

  1. Meg kell mondanunk a Squidnek, hogy melyik hitelesítési segédprogramot használja az auth_param direktívával a program nevének megadásával (valószínűleg: /usr/lib/squid/ncsa_auth vagy /usr/lib64/squid/basic_nsca_auth), valamint a parancssori opciók (ebben az esetben /etc/squid/passwd), ha szükséges.
  2. Az /etc/squid/passwd fájl a htpasswd segítségével jön létre, amely egy olyan eszköz, amely az alapvető hitelesítést fájlok segítségével kezeli. Lehetővé teszi számunkra, hogy hozzáadjunk egy listát azokról a felhasználónevekről (és a hozzájuk tartozó jelszavakról), amelyek számára engedélyezett a Squid.
  3. A credentialsttl 30 perc esetén 30 percenként meg kell adnia felhasználónevét és jelszavát (ezt az időintervallumot órákkal is megadhatja).
  4. A kis- és nagybetűk megkülönböztetése bekapcsolva azt jelzi, hogy a felhasználónevek és jelszavak megkülönböztetik a kis- és nagybetűket.
  5. A tartomány a hitelesítési párbeszédpanel szövegét jelöli, amely a squid hitelesítésére szolgál.
  6. Végül a hozzáférés csak akkor történik meg, ha a proxy hitelesítés (proxy_auth KÖTELEZŐ) sikeres.

Futtassa a következő parancsot a fájl létrehozásához és a gacanepa felhasználó hitelesítő adatainak hozzáadásához (ha a fájl már létezik, hagyja ki a -c jelzőt).

htpasswd -c /etc/squid/passwd gacanepa

Nyisson meg egy webböngészőt az ügyfélgépen, és próbáljon meg böngészni egy adott webhelyre.

Ha a hitelesítés sikeres, hozzáférést kap a kért erőforráshoz. Ellenkező esetben a hozzáférés megtagadva lesz.

A gyorsítótár használata az adatátvitel felgyorsítására

A Squid egyik megkülönböztető jellemzője a webről kért erőforrások gyorsítótárazásának lehetősége a lemezre annak érdekében, hogy felgyorsítsák az adott objektumok jövőbeli kérelmeit, akár ugyanaz a kliens, akár mások.

Adja hozzá a következő direktívákat a squid.conf fájlhoz.

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

A fenti irányelvek néhány pontosítása.

  1. Az ufs a Squid tárolási formátuma.
  2. A /var/cache/squid egy legfelső szintű könyvtár, ahol a gyorsítótár-fájlok tárolódnak. Ennek a könyvtárnak léteznie kell, és a Squid által írhatónak kell lennie (a Squid NEM hozza létre ezt a könyvtárat Önnek).
  3. 1000 az ebben a könyvtárban felhasználandó összeg (MB-ban).
  4. A 16 az 1. szintű alkönyvtárak száma, míg a 256 a /var/spool/squid 2. szintű alkönyvtárainak száma.
  5. A maximum_object_size direktíva meghatározza a gyorsítótárban megengedett objektumok maximális méretét.
  6. A refresh_pattern megmondja a Squidnek, hogyan kezelje az adott fájltípusokat (ebben az esetben .mp4 és .iso), és mennyi ideig tárolja a kért fájlt. objektumok a gyorsítótárban (2880 perc=2 nap).

Az első és a második 2880 alsó és felső határértéke annak, hogy az explicit lejárati idővel nem rendelkező objektumok mennyi ideig tekinthetők frissnek, és így a gyorsítótár szolgálja ki őket, míg 0%< A az objektumok életkorának (legutóbbi módosítás óta eltelt idő) százalékos aránya, amelynél minden explicit lejárati idő nélküli objektum frissnek számít.

Esettanulmány: .mp4 fájl letöltése 2 különböző kliensről és a gyorsítótár tesztelése

Az első kliens (IP 192.168.0.104) 2 perc 52 másodperc alatt letölt egy 71 MB .mp4 fájlt.

A második kliens (IP 192.168.0.17) 1,4 másodperc alatt letölti ugyanazt a fájlt!

Ennek az az oka, hogy a fájlt a Squid gyorsítótárból szolgáltatták ki (ezt a TCP_HIT/200 jelzi) a második esetben, szemben az első esettel, amikor közvetlenül a webhelyről töltötték le. az internet (a TCP_MISS/200 által képviselt).

A HIT és MISS kulcsszavak, valamint a 200 http válaszkód azt jelzik, hogy a fájl mindkét alkalommal sikeresen kiszolgálásra került, de a gyorsítótár HIT. illetve Missed. Ha egy kérést a gyorsítótár valamilyen okból nem tud kiszolgálni, akkor a Squid az internetről próbálja kiszolgálni.

Következtetés

Ebben a cikkben megvitattuk, hogyan kell beállítani egy Squid web-gyorsítótár proxyt. A proxyszervert használhatja a tartalmak kiválasztott kritériumok alapján történő szűrésére, valamint a késleltetés csökkentésére (mivel a bejövő kérések a gyorsítótárból kerülnek kiszolgálásra, ami közelebb van a klienshez, mint a tartalmat ténylegesen kiszolgáló webszerver, ami gyorsabb adatátvitel) és a hálózati forgalom is (csökkenti a felhasznált sávszélességet, ami pénzt takarít meg, ha fizet a forgalomért).

További dokumentációért a Squid webhelyen keresse fel (a wikit is ellenőrizze), de ne habozzon kapcsolatba lépni velünk, ha kérdése vagy megjegyzése van. Nagyon örülünk, ha hallunk rólad!