A mai digitális világban a hálózat biztonsága és teljesítménye alapvető fontosságú. Legyen szó otthoni hálózatról, kisebb vállalkozásról vagy egy nagyobb szervezet infrastruktúrájáról, a megfelelő védelem és az erőforrások hatékony kihasználása elengedhetetlen. Ebben a cikkben két nyílt forráskódú eszközt mutatunk be, amelyek együttesen biztosítják ezeket a célokat: a Squid proxy szervert és a Shorewall tűzfalat. Lépésről lépésre vezetjük végig Önt a telepítésen, konfiguráláson és az integráción, hogy stabil, biztonságos és gyors hálózatot hozzon létre Linux rendszereken.
Mi az a Squid és miért van rá szükségünk?
A Squid egy rendkívül népszerű, nagy teljesítményű caching proxy szerver webes kliensek (például böngészők) számára. Fő feladata, hogy a gyakran kért webes tartalmakat (képek, CSS fájlok, JavaScript, stb.) helyben tárolja (cache-eli). Amikor egy felhasználó újra kéri ugyanazt a tartalmat, a Squid ahelyett, hogy letöltené az internetről, azonnal a gyorsítótárából szolgálja ki, drasztikusan csökkentve ezzel a betöltési időt és a hálózati sávszélesség-használatot.
De a Squid többet nyújt, mint egyszerű gyorsítótárazás:
- Sávszélesség-megtakarítás: A gyorsítótárazás révén kevesebb adatforgalom megy ki az internetre.
- Gyorsabb böngészés: A gyorsítótárból kiszolgált tartalmak azonnal megjelennek.
- Hozzáférés-szabályozás: Lehetővé teszi, hogy szabályokat állítson be arra vonatkozóan, hogy mely felhasználók, mely időpontokban és milyen weboldalakat érhetnek el. Ez kiválóan alkalmas gyerekek védelmére vagy vállalati környezetben a munkahelyi hatékonyság növelésére.
- Naplózás: Részletes naplót vezet a felhasználók által látogatott oldalakról, ami auditálási vagy hibaelhárítási célokra hasznos lehet.
- Anonimitás: Elrejtheti a felhasználók valós IP-címét, növelve ezzel az online adatvédelmet.
Mi az a Shorewall és miért van rá szükségünk?
A Shorewall egy magas szintű konfigurációs eszköz a Linux kernel beépített netfilter tűzfal rendszeréhez (azaz az iptables/nftables-hez). Az iptables hihetetlenül erős, de a komplexitása miatt sok felhasználó számára nehezen konfigurálható. A Shorewall leegyszerűsíti ezt a folyamatot, egy sor intuitív konfigurációs fájlon keresztül, amelyekkel könnyedén definiálhatók a hálózati zónák, szabályzatok és egyedi tűzfal szabályok.
A Shorewall előnyei:
- Egyszerűsített konfiguráció: A szöveges konfigurációs fájlok sokkal átláthatóbbak és könnyebben kezelhetők, mint a nyers iptables parancsok.
- Zónaalapú védelem: Lehetővé teszi a hálózat logikai zónákra osztását (pl. belső hálózat, külső hálózat, DMZ), és szabályokat definiálni a zónák közötti forgalomra.
- Robusztus biztonság: Mivel az iptables-re épül, a Shorewall ugyanazt a magas szintű védelmet nyújtja, de hibalehetőséget csökkentve.
- Részletes naplózás: Lehetővé teszi a gyanús forgalom naplózását, segítve a hálózati támadások észlelését.
- Rugalmasság: Támogatja a NAT-ot (Network Address Translation), VPN-t és számos más hálózati funkciót.
Előkészületek
Mielőtt belekezdenénk, győződjünk meg arról, hogy a rendszerünk készen áll. Az alábbi lépések a legtöbb modern Linux disztribúción (Debian, Ubuntu, CentOS, Fedora, stb.) alkalmazhatók. Az utasítások elsősorban Debian/Ubuntu alapú rendszerekre vonatkoznak, de megjegyezzük a különbségeket, ahol szükséges.
- Rendszer frissítése: Mindig ajánlott a rendszer frissítése a legújabb csomagokra:
sudo apt update && sudo apt upgrade -y
(CentOS/RHEL esetén:
sudo dnf update -y
) - Root/Sudo hozzáférés: Győződjön meg róla, hogy van root jogosultsága vagy egy sudo-felhasználója.
- Hálózati konfiguráció: Ismerje a szerver hálózati interfészeit (pl.
eth0
,enp0s3
) és az IP-címeket. Különösen fontos ez, ha több hálózati kártyát használ.
Squid beállítása lépésről lépésre
1. Squid telepítése
Nyissa meg a terminált, és futtassa a következő parancsot:
sudo apt install squid -y
(CentOS/RHEL esetén: sudo dnf install squid -y
)
A telepítés befejezése után a Squid szolgáltatás valószínűleg automatikusan elindul. Ellenőrizheti a státuszát:
sudo systemctl status squid
2. Squid konfigurációs fájl
A Squid fő konfigurációs fájlja a /etc/squid/squid.conf
. Mielőtt módosítaná, mindig készítsen biztonsági másolatot az eredetiről:
sudo cp /etc/squid/squid.conf /etc/squid/squid.conf.bak
Nyissa meg a fájlt egy szövegszerkesztővel (pl. nano
vagy vim
):
sudo nano /etc/squid/squid.conf
3. Alapvető Squid beállítások
Keresse meg, vagy adja hozzá a következő beállításokat:
- Port: A Squid alapértelmezés szerint a 3128-as porton figyel. Ha változtatni szeretné, módosítsa a
http_port
direktívát. Tartsa meg az alapértelmezettet az egyszerűség kedvéért.http_port 3128
- Hozzáférés-szabályozás (ACL-ek): A Squid ACL-eket (Access Control Lists) használ a hozzáférés szabályozására. Először definiálja a „helyi hálózatot”, ahonnan engedélyezi a hozzáférést a proxyhoz. Cserélje le a példa IP-tartományt a saját hálózata tartományára (pl.
192.168.1.0/24
,10.0.0.0/8
, stb.).
Keresse meg az alábbi sorokat, és adja hozzá a saját hálózatát:
# ACL-ek: Hálózatok definíciója
acl localnet src 10.0.0.0/8 # RFC1918 saját IP-cím tartományok
acl localnet src 172.16.0.0/12 # RFC1918 saját IP-cím tartományok
acl localnet src 192.168.0.0/16 # RFC1918 saját IP-cím tartományok
acl localnet src fc00::/7 # RFC4193 privát IPv6 tartomány
acl localnet src fe80::/10 # RFC4291 link-local IPv6 tartomány
# Squid-hez való hozzáférés engedélyezése a "localnet" számára
http_access allow localnet
http_access deny all
Ez a konfiguráció biztosítja, hogy csak a meghatározott helyi hálózatról lehessen használni a proxy szervert, és minden más forgalmat elutasít.
- Látható gazdanév: Ajánlott beállítani a proxy szerver nevét, ami hibaüzenetekben jelenhet meg:
visible_hostname myproxyserver.example.com
- Gyorsítótár (Cache): Az alapértelmezett beállítások általában elegendőek, de ha módosítani szeretné a gyorsítótár méretét vagy helyét, keresse meg a
cache_dir
direktívát. Példa egy 100 GB-os gyorsítótárra a/var/spool/squid
könyvtárban, 16 első szintű és 256 második szintű alkönyvtárral:cache_dir ufs /var/spool/squid 100000 16 256
(A 100000 MB ~ 100 GB.)
4. Squid szolgáltatás újraindítása és engedélyezése
Mentse a konfigurációs fájlt, majd ellenőrizze a szintaktikai hibákat:
sudo squid -k parse
sudo squid -k check
Ha nincs hiba, indítsa újra a Squid szolgáltatást:
sudo systemctl restart squid
Győződjön meg róla, hogy a Squid a rendszerindításkor is elindul:
sudo systemctl enable squid
5. Squid tesztelése
Konfigurálja a böngészőjét (vagy más alkalmazását) a Squid proxy használatára (IP-cím: a szerver IP-címe, port: 3128). Alternatívaként a szerverről is tesztelheti curl
segítségével:
curl -x http://localhost:3128 http://example.com
Nézze meg a Squid hozzáférési naplóját (/var/log/squid/access.log
) a kérések nyomon követéséhez.
Shorewall beállítása lépésről lépésre
1. Shorewall telepítése
Telepítse a Shorewall csomagot:
sudo apt install shorewall -y
(CentOS/RHEL esetén: sudo dnf install shorewall -y
)
2. Shorewall konfigurációs fájlok
A Shorewall konfigurációs fájlok a /etc/shorewall/
könyvtárban találhatók. Ezek kulcsfontosságúak:
zones
: Itt definiálja a hálózati zónákat.interfaces
: Hozzárendeli a hálózati interfészeket a zónákhoz.policy
: Meghatározza az alapértelmezett szabályzatot a zónák közötti forgalomra.rules
: Itt adhat hozzá specifikus tűzfal szabályokat.masq
: NAT (Network Address Translation) beállításokhoz.
Készítsen biztonsági másolatot a Shorewall eredeti konfigurációs könyvtáráról is:
sudo cp -r /etc/shorewall /etc/shorewall.bak
3. Zónák és interfészek definiálása
A Shorewall zónaalapú. Definiáljuk a következő alapvető zónákat:
fw
: Maga a tűzfal (a szerver, amin a Shorewall fut).net
: A külső hálózat (internet).loc
: A belső, helyi hálózat.
Szerkessze a /etc/shorewall/zones
fájlt:
sudo nano /etc/shorewall/zones
Adja hozzá (vagy győződjön meg róla, hogy léteznek) az alábbi sorok:
#ZONE TYPE OPTIONS IN OUT
fw firewall
net ipv4
loc ipv4
Most rendeljük hozzá az interfészeket a zónákhoz a /etc/shorewall/interfaces
fájlban. Cserélje le az eth0
és eth1
értékeket a saját hálózati interfészei nevére. Ha csak egy interfésze van (és az a belső hálózatra és az internetre is szolgál), akkor a net
és loc
zónákhoz is ugyanazt az interfészt használhatja, vagy egy speciálisabb beállítással. Ebben a példában feltételezzük, hogy eth0
a külső (internetes) és eth1
a belső (helyi) hálózat felé néz.
sudo nano /etc/shorewall/interfaces
Adja hozzá (vagy győződjön meg róla, hogy léteznek) az alábbi sorok:
#ZONE INTERFACE BROADCAST OPTIONS
net eth0 detect
loc eth1 detect
4. Alapértelmezett szabályzatok (Policy)
A /etc/shorewall/policy
fájl definiálja az alapértelmezett viselkedést a zónák között. Javasolt egy szigorú „alapértelmezés szerinti tiltás” megközelítés:
sudo nano /etc/shorewall/policy
Adja hozzá (vagy győződjön meg róla, hogy léteznek) az alábbi sorok:
#SOURCE DEST POLICY LOG LEVEL LIMIT:BURST
loc net ACCEPT # Engedélyezi a belső hálózatról az internetre irányuló forgalmat
net all DROP info # Elutasít minden bejövő forgalmat az internetről (naplózva)
all all REJECT info # Elutasít minden más forgalmat (naplózva)
Fontos: A DROP
csendesen eldobja a csomagot, a REJECT
ICMP hibát küld vissza. A info
naplózási szintet jelent.
5. Szabályok hozzáadása (Rules)
A /etc/shorewall/rules
fájl tartalmazza a specifikus engedélyező vagy tiltó szabályokat, amelyek felülírják az alapértelmezett szabályzatot.
sudo nano /etc/shorewall/rules
Adja hozzá a következő szabályokat:
- SSH hozzáférés engedélyezése: Engedélyezze az SSH hozzáférést a belső hálózatról a tűzfalhoz (a szerverhez):
#ACTION SOURCE DEST PROTO DEST PORT(S) ACCEPT loc $FW tcp 22
(A
$FW
egy speciális Shorewall változó, ami a tűzfalat jelenti.) - Squid proxy hozzáférés engedélyezése: Engedélyezze a belső hálózatról a Squid proxy portjára (3128) való hozzáférést a tűzfalon:
ACCEPT loc $FW tcp 3128
- Ha a szerver DHCP szerverként is működik a belső hálózaton:
ACCEPT $FW loc udp 67 # DHCP szerver ACCEPT loc $FW udp 68 # DHCP kliens
- DNS forgalom engedélyezése a szerverről:
ACCEPT $FW net udp 53 ACCEPT $FW net tcp 53
6. Shorewall szolgáltatás engedélyezése és indítása
Alapértelmezés szerint a Shorewall nem indul el automatikusan a rendszerindításkor. Ezt engedélyezni kell:
Debian/Ubuntu esetén szerkessze a /etc/default/shorewall
fájlt, és állítsa át a startup
értéket:
sudo nano /etc/default/shorewall
Keresse meg és módosítsa:
startup=1
CentOS/RHEL esetén szerkessze a /etc/sysconfig/shorewall
fájlt, és állítsa át a STARTUP
értéket:
sudo nano /etc/sysconfig/shorewall
Keresse meg és módosítsa:
STARTUP=yes
Most indítsa el és engedélyezze a Shorewall szolgáltatást:
sudo systemctl enable shorewall
sudo systemctl start shorewall
A Shorewall azonnal alkalmazza a szabályokat. Ha valaha problémák merülnének fel, vagy kizárja magát, a sudo shorewall stop
vagy sudo shorewall clear
parancsokkal leállíthatja, illetve törölheti a szabályokat.
7. Shorewall tesztelése
Ellenőrizze a Shorewall állapotát:
sudo shorewall status
A szabályok ellenőrzéséhez:
sudo shorewall check
A generált iptables szabályok megtekintéséhez:
sudo shorewall show
Squid és Shorewall integrációja (Átlátszó Proxy)
Az egyik legerősebb konfiguráció az átlátszó proxy (transparent proxy). Ez azt jelenti, hogy a klienseknek nem kell manuálisan beállítaniuk a proxyt, mert a tűzfal automatikusan átirányítja az összes webes forgalmat a Squid-hez. Ez különösen hasznos, ha a belső hálózaton lévő összes eszközt (beleértve a mobil eszközöket, IoT eszközöket stb.) is kezelni szeretné.
Fontos: Az átlátszó proxyhoz a Squid-nek különleges módban kell futnia, és a Shorewall-nak is megfelelően kell konfigurálnia az átirányítást. Ehhez a szervernek az útválasztónak kell lennie a belső hálózat és az internet között (azaz két hálózati interfésszel rendelkeznie, vagy megfelelő routinggal kell konfigurálni).
1. Squid konfigurálása átlátszó módra
Nyissa meg újra a /etc/squid/squid.conf
fájlt, és módosítsa a http_port
direktívát:
sudo nano /etc/squid/squid.conf
Keresse meg a http_port 3128
sort, és módosítsa a következőre:
http_port 3128 intercept
Vagy régebbi Squid verziókon: http_port 3128 transparent
Indítsa újra a Squid-et:
sudo systemctl restart squid
2. Shorewall konfigurálása a forgalom átirányítására
Most módosítsuk a /etc/shorewall/rules
fájlt, hogy a bejövő HTTP (80-as port) és HTTPS (443-as port) forgalmat a belső hálózatról átirányítsuk a Squid 3128-as portjára.
sudo nano /etc/shorewall/rules
Adja hozzá a következő sorokat (a létező ACCEPT
szabályok alá):
# Átirányítás a Squid proxyhoz (Transparent Proxy)
# HTTP forgalom átirányítása a loc zónából a Squid-hez
REDIRECT loc $FW tcp 80 3128
# HTTPS forgalom átirányítása a loc zónából a Squid-hez
# Megjegyzés: A HTTPS interceptálás (MITM) további Squid konfigurációt igényel (SSL-Bump)
# és jelentős biztonsági és jogi megfontolásokat von maga után.
# Ha ezt nem tervezi használni, hagyja ki vagy csak a HTTP-t irányítsa át.
REDIRECT loc $FW tcp 443 3128
Fontos megjegyzés a HTTPS-ről: A HTTPS forgalom átirányítása Squid-en keresztül általában SSL-interceptiont (más néven SSL-Bump) igényel, ami magában foglalja a titkosított forgalom dekódolását és újratitkosítását. Ez komoly biztonsági és adatvédelmi következményekkel jár, és megfelelő SSL-tanúsítványkezelés nélkül nem működik. Kezdő felhasználóknak javasolt eleinte csak a HTTP (80-as port) forgalom átirányításával kísérletezni.
Ha a szerver a belső hálózat számára az egyetlen internet hozzáférési pont, akkor engedélyeznie kell a NAT-ot (Masquerading) is. Ehhez szerkessze a /etc/shorewall/masq
fájlt:
sudo nano /etc/shorewall/masq
Adja hozzá a következő sort:
#INTERFACE SOURCE ADDRESS PROTO PORT IPSEC MARK VRF
eth0 eth1 # eth0 a külső, eth1 a belső interfész
Cserélje ki az eth0
és eth1
értékeket a saját interfészei nevére. Ez a szabály azt mondja a Shorewall-nak, hogy a eth1
-ről érkező forgalmat maszkírozza (NAT-olja) az eth0
interfész IP-címével, amikor az elhagyja a szervert.
Végül, alkalmazza az új Shorewall szabályokat:
sudo shorewall restart
Most a belső hálózaton lévő klienseknek automatikusan a Squid proxyn keresztül kellene mennie a webes forgalmuknak, anélkül, hogy bármit is beállítanának a böngészőjükben.
Gyakori hibaelhárítás és tippek
- Ellenőrizze a naplókat: Mindig a naplók az elsődleges hibaelhárítási források.
- Squid naplók:
/var/log/squid/access.log
,/var/log/squid/cache.log
- Rendszernaplók:
sudo journalctl -xe
- Squid naplók:
- Shorewall hibakeresés: Használja a
sudo shorewall check
parancsot a konfigurációs hibák ellenőrzésére. Asudo shorewall dump
megmutatja az aktuálisan alkalmazott iptables szabályokat. - Kizárta magát? Ha a Shorewall konfigurációja miatt elvesztette a hozzáférést a szerverhez, indítsa újra a szervert (ha hozzáfér a konzolhoz vagy távoli menedzsmenthez), vagy használja a
sudo shorewall clear
parancsot, ami törli az összes Shorewall által generált iptables szabályt. - Fájl jogosultságok: Győződjön meg róla, hogy a konfigurációs fájlok megfelelő jogosultságokkal rendelkeznek (általában root olvashatja és írhatja).
- Tesztelés lépésről lépésre: Ne implementáljon túl sok változást egyszerre. Teszteljen minden módosítást külön-külön.
Biztonsági megfontolások
- Rendszeres frissítések: Tartsa naprakészen a Linux rendszerét, a Squid-et és a Shorewall-t, hogy védve legyen a sebezhetőségek ellen.
- Hozzáférés-szabályozás: Szigorúan korlátozza a Squid proxyhoz való hozzáférést a
http_access
szabályokkal csak a megbízható hálózatokra. - Erős jelszavak: Ha Squid autentikációt használ, alkalmazzon erős, egyedi jelszavakat.
- Szabályok felülvizsgálata: Rendszeresen tekintse át a Shorewall szabályait, hogy megbizonyosodjon arról, csak a szükséges forgalmat engedélyezi. A „kevesebb több” elvét kövesse.
- Naplózás: Engedélyezze a naplózást a Shorewall-ban a gyanús forgalom nyomon követéséhez.
- Fizikai biztonság: Biztosítsa a szerver fizikai biztonságát is.
Összefoglalás
A Squid és a Shorewall együttes alkalmazása rendkívül hatékony módon képes javítani hálózata biztonságát, teljesítményét és felügyelhetőségét. A Squid gyorsítótárazása felgyorsítja a webböngészést és csökkenti a sávszélesség-felhasználást, míg a Shorewall robusztus tűzfalvédelmet biztosít, egyszerűsítve az iptables komplexitását. Az átlátszó proxy konfigurációval pedig kényelmesen, a felhasználók beavatkozása nélkül terelheti át a forgalmat a proxy szerveren keresztül.
Bár a kezdeti beállítás időt és odafigyelést igényel, a hosszú távú előnyök messzemenően meghaladják a befektetett energiát. Ez a lépésről lépésre útmutató segít Önnek abban, hogy sikeresen implementálja ezeket az eszközöket, és egy biztonságosabb, gyorsabb és jobban szabályozott hálózatot hozzon létre.