Squid proxy – jak skonfigurować prywatny serwer proxy

Oskar Gajzler
Przez
Oskar Gajzler
Redaktor IINTE.edu.pl, na co dzień zajmuje się technologiami internetowymi i tłumaczeniem skomplikowanych tematów na prosty język. Pisze poradniki o tym, jak załatwiać sprawy przez internet, jak...
10 min czytania

Squid to jeden z najpopularniejszych serwerów proxy w systemach Linux, wykorzystywany zarówno jako proxy dla użytkowników, jak i jako element kontroli dostępu do internetu w sieciach lokalnych. Prywatny serwer proxy na Squidzie pozwala przekierowywać ruch przez własną maszynę, ograniczać dostęp wybranym adresom IP oraz stosować reguły blokowania domen.

Czym jest prywatny serwer proxy

Prywatny proxy to serwer pośredniczący w komunikacji z internetem, z którego korzysta tylko właściciel lub ograniczona grupa użytkowników. W odróżnieniu od publicznych proxy prywatny serwer daje większą kontrolę nad dostępem, konfiguracją i bezpieczeństwem.

W praktyce najczęściej używa się go do:

  • ukrycia publicznego adresu IP klienta,
  • centralnego zarządzania ruchem internetowym,
  • ograniczenia dostępu do proxy tylko dla określonych adresów IP,
  • wdrożenia uwierzytelniania loginem i hasłem,
  • blokowania wybranych stron lub kategorii stron.

Kiedy warto użyć Squid

Squid sprawdza się szczególnie wtedy, gdy potrzebujesz:

  • prostego prywatnego proxy na VPS lub serwerze domowym,
  • narzędzia do kontroli ruchu w małej sieci,
  • ręcznej konfiguracji proxy w przeglądarce lub systemie,
  • reguł dostępu opartych o adres IP lub autoryzację użytkownika.

Wymagania wstępne

Do uruchomienia Squida potrzebujesz:

  • serwera z systemem Linux,
  • dostępu administracyjnego root lub sudo,
  • otwartego portu proxy, najczęściej 3128,
  • opcjonalnie publicznego adresu IP, jeśli proxy ma działać zdalnie.

Instalacja Squid w Linuxie

Najprościej zainstalować Squida z repozytoriów dystrybucji (dnf/yum/apt) lub skorzystać z kontenera Docker. Poniżej znajdziesz typowe komendy dla popularnych scenariuszy:

Instalacja na systemach opartych o Red Hat

Aby zainstalować pakiet przez DNF:

sudo dnf install squid -y

Lub przez YUM:

sudo yum install squid -y

Po instalacji uruchom usługę i dodaj ją do autostartu:

sudo systemctl enable --now squid

Sprawdzenie statusu usługi:

sudo systemctl status squid --no-pager

Uruchomienie usługi oraz włączenie jej przy starcie systemu to standardowy krok administracyjny po instalacji Squida.

Instalacja w Dockerze

Jeśli zależy Ci na szybkim wdrożeniu, możesz uruchomić Squida w kontenerze Docker z gotowego obrazu:

docker run --name squid -p 3128:3128 --rm -d \
-e PROXYLOGIN=mylogin \
-e PROXYPASSWORD=mypassword \
anticaptcha/squid

Jeśli chcesz użyć własnego pliku konfiguracyjnego, zamontuj go do kontenera:

docker run --name squid -p 3128:3128 --rm -d \
-v /path/to/squid.conf:/etc/squid/squid.conf \
anticaptcha/squid

To rozwiązanie jest wygodne, gdy chcesz szybko postawić prywatny proxy bez ręcznej instalacji całego stosu zależności.

Gdzie znajduje się konfiguracja Squida

Domyślny plik konfiguracyjny znajduje się pod ścieżką:

/etc/squid/squid.conf

To właśnie ten plik modyfikuje się przy ustawianiu reguł dostępu, portu nasłuchu, autoryzacji i filtrów.

Przed zmianami warto wykonać kopię zapasową:

sudo cp /etc/squid/squid.conf /etc/squid/squid.conf.bak

Podstawowa konfiguracja prywatnego proxy

Minimalna konfiguracja prywatnego Squida powinna określać:

  • port nasłuchu,
  • dozwolone adresy IP,
  • ewentualną autoryzację,
  • reguły http_access.

Przykładowy, prosty schemat:

http_port 3128
acl allowed_clients src 192.168.1.0/24
http_access allow allowed_clients
http_access deny all

To oznacza, że z proxy będą mogły korzystać tylko urządzenia z podsieci 192.168.1.0/24. Ograniczanie dostępu poprzez ACL jest podstawowym i skutecznym mechanizmem kontroli w Squidzie.

Ograniczenie dostępu tylko do własnego IP

Jeśli proxy ma służyć wyłącznie Tobie, najlepiej ograniczyć dostęp do pojedynczego adresu IP. Poniższa konfiguracja dopuszcza ruch tylko z jednego źródła:

acl moje_ip src 1.2.3.4/32
http_access allow moje_ip
http_access deny all

Jeśli masz dynamiczny adres IP, takie ograniczenie zadziała tylko do czasu zmiany adresu. W przypadku zmiennego IP rozważ uwierzytelnianie loginem i hasłem lub połączenie przez VPN z ustalonym adresem źródłowym.

Uwierzytelnianie loginem i hasłem

Jednym z najważniejszych elementów prywatnego proxy jest autoryzacja. W typowej konfiguracji stosuje się mechanizm basic_auth oparty o plik haseł. Najpierw zainstaluj narzędzie do tworzenia pliku haseł i dodaj użytkownika:

sudo htpasswd -c /etc/squid/passwd mylogin

Następnie w pliku squid.conf dodaj parametry uwierzytelniania i reguły dostępu:

auth_param basic program /usr/lib64/squid/basic_ncsa_auth /etc/squid/passwd
auth_param basic realm Private Proxy
acl authenticated proxy_auth REQUIRED
http_access allow authenticated
http_access deny all

Uwaga: dokładna ścieżka do basic_ncsa_auth może różnić się zależnie od dystrybucji (np. /usr/lib/squid/ w Debian/Ubuntu). Zweryfikuj lokalizację binarium w swoim systemie, aby uniknąć błędów autoryzacji.

Jak dodać kilka adresów lub podsieci

Jeśli z proxy ma korzystać więcej niż jedna maszyna, dodaj kilka reguł ACL i zezwól na dostęp wybranym źródłom:

acl dom src 192.168.0.10/32
acl biuro src 192.168.0.0/24
http_access allow dom
http_access allow biuro
http_access deny all

Kolejność reguł http_access ma znaczenie — najpierw umieść dopuszczenia, a na końcu blokadę globalną.

Blokowanie wybranych stron

Aby zablokować dostęp do określonych domen, użyj ACL dstdomain i reguły deny:

acl blocked_sites dstdomain .onet.pl
http_access deny blocked_sites

Jeśli chcesz, aby blokada działała poprawnie, umieść regułę deny przed ogólnym allow dla użytkowników. Przykład kompletnej sekwencji:

acl blocked_sites dstdomain .onet.pl
acl localnet src 192.168.1.0/24
http_access deny blocked_sites
http_access allow localnet
http_access deny all

Takie filtrowanie pozwala w prosty sposób egzekwować politykę dostępu do treści w sieci lokalnej.

Uruchomienie i restart usługi

Po edycji konfiguracji należy zrestartować Squida:

sudo systemctl restart squid

Aby sprawdzić, czy usługa działa poprawnie:

sudo systemctl status squid --no-pager

Jak sprawdzić, czy proxy nasłuchuje

Do weryfikacji nasłuchu na porcie użyj polecenia ss lub netstat i wyszukaj proces Squida:

sudo ss -tulpn | grep squid

albo:

sudo netstat -lenp | grep squid

Jeżeli widzisz nasłuch na porcie 3128, oznacza to, że Squid działa i przyjmuje połączenia.

Test działania proxy z poziomu terminala

Jednym z najlepszych sposobów sprawdzenia konfiguracji jest test przez curl z uwzględnieniem autoryzacji użytkownika i hasła:

curl -x IP_HERE:3128 -U mylogin:mypassword http://antigate.com/iptest.php

Możesz też sprawdzić dowolną stronę prezentującą publiczny adres IP. Jeśli ruch przechodzi przez proxy poprawnie, serwis pokaże adres serwera proxy, a nie lokalny adres klienta.

Otwieranie Squida na świat

Jeśli proxy ma być dostępne z zewnątrz, zadbaj o ograniczenie dostępu (np. przez ACL do własnego IP lub uwierzytelnianie) oraz otwarcie odpowiedniego portu w firewallu. Przykładowa reguła dopuszczająca tylko jeden adres:

acl moje-ip src 203.0.113.10/32
http_access allow moje-ip
http_access deny all

Nie wystawiaj Squida do internetu bez kontroli dostępu — otwarty port 3128 bez ograniczeń stanowi poważne ryzyko bezpieczeństwa.

Firewall

Jeśli używasz firewalld, dopuszczenie usługi i przeładowanie reguł wykonasz tak:

sudo firewall-cmd --permanent --add-service=squid
sudo firewall-cmd --reload

Jeżeli korzystasz z innego mechanizmu zapory, dostosuj polecenia do używanego systemu (np. iptables lub ufw).

Konfiguracja proxy w Windows 10 i 11

Jeśli proxy ma być używane na komputerze z Windows, w ustawieniach systemowych ręcznie wskaż serwer proxy i port. W systemie Windows wykonaj kolejno:

  • wejdź w Ustawienia,
  • wybierz Sieć i internet,
  • przejdź do Proxy,
  • włącz opcję Użyj serwera proxy,
  • wpisz adres IP i port serwera proxy,
  • zapisz zmiany.

W tym miejscu dodasz także wyjątki (adresy omijające proxy) oraz opcję wyłączania proxy dla lokalnych adresów intranetowych.

Konfiguracja proxy w przeglądarce

W przeglądarce wprowadź poniższe dane połączeniowe:

  • adres IP serwera,
  • port, najczęściej 3128,
  • login i hasło, jeśli włączono autoryzację.

Po poprawnym wpisaniu danych przeglądarka poprosi o uwierzytelnienie. To standardowe zachowanie w przypadku włączonej autoryzacji w Squidzie.

Przykładowa kompletna konfiguracja prywatnego proxy

Poniżej znajduje się prosty, praktyczny przykład dla prywatnego proxy tylko z własnej podsieci:

http_port 3128
acl allowed_clients src 192.168.1.0/24
acl blocked_sites dstdomain .onet.pl
http_access deny blocked_sites
http_access allow allowed_clients
http_access deny all

Jeśli chcesz dodać logowanie użytkownika, rozbuduj konfigurację o mechanizm basic_auth i zezwól tylko autoryzowanym osobom.

Wersja dla pojedynczego użytkownika

Dla prywatnego proxy używanego wyłącznie przez jedną osobę sensowny układ to:

http_port 3128
acl authenticated proxy_auth REQUIRED
http_access allow authenticated
http_access deny all

To rozwiązanie jest szczególnie wygodne na VPS, gdy dostęp ma być możliwy z wielu lokalizacji, ponieważ nie wymaga stałego adresu IP użytkownika.

Najczęstsze problemy

  • brak połączenia z proxy zwykle oznacza, że usługa nie działa, port nie jest otwarty albo firewall blokuje ruch,
  • błąd autoryzacji najczęściej wynika z błędnego loginu lub hasła albo niepoprawnej konfiguracji modułu uwierzytelniania,
  • brak reakcji na reguły ACL zwykle wynika z błędnej kolejności wpisów w squid.conf,
  • jeśli po zmianach nic się nie dzieje, należy ponownie uruchomić usługę Squid.

Najlepsza praktyka dla prywatnego proxy

W praktyce najbezpieczniej jest:

  • ograniczyć dostęp tylko do wybranych IP albo użyć autoryzacji,
  • nie wystawiać proxy bezpośrednio do internetu bez kontroli,
  • ustawić firewall dla portu 3128,
  • regularnie testować działanie komendą curl,
  • utrzymywać prostą konfigurację i dodawać reguły stopniowo.
Udostępnij ten artykuł
Obserwuj
Redaktor IINTE.edu.pl, na co dzień zajmuje się technologiami internetowymi i tłumaczeniem skomplikowanych tematów na prosty język. Pisze poradniki o tym, jak załatwiać sprawy przez internet, jak bezpiecznie korzystać z sieci i jak dobierać sprzęt oraz oprogramowanie. Prywatnie tropi nowinki technologiczne i testuje je, zanim opisze.
Brak komentarzy

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Wymagane pola są oznaczone *