Squid jest w pełni funkcjonalnym proxy buforującym, obsługującym popularne protokoły sieciowe, takie jak HTTP, HTTPS, FTP i inne. Może być używany do poprawy wydajności serwera WWW przez buforowanie powtarzających się żądań, filtrowanie ruchu sieciowego i dostęp do treści z ograniczeniami geograficznymi.
Ten poradnik wyjaśnia, jak skonfigurować Squid Proxy na Ubuntu 20.04 i skonfigurować przeglądarki Firefox i Google Chrome do korzystania z niego.
Instalacja Squid na Ubuntu #
Pakiet squid jest zawarty w standardowych repozytoriach Ubuntu 20.04. Aby go zainstalować, wykonaj następujące polecenia jako użytkownik sudo:
sudo apt update
sudo apt install squid
Po zakończeniu instalacji, usługa Squid uruchomi się automatycznie. Aby to zweryfikować, sprawdź status usługi:
sudo systemctl status squid
Wyjście będzie wyglądało tak:
● squid.service - Squid Web Proxy Server Loaded: loaded (/lib/systemd/system/squid.service; enabled; vendor preset: enabled) Active: active (running) since Fri 2020-10-23 19:02:43 UTC; 14s ago Docs: man:squid(8)...
Konfigurowanie usługi Squid #
Usługa Squid może być skonfigurowana poprzez edycję pliku /etc/squid/squid.conf
. Plik konfiguracyjny zawiera komentarze, które opisują co robi każda opcja konfiguracyjna. Możesz również umieścić swoje ustawienia konfiguracyjne w oddzielnych plikach, które mogą być dołączone do głównego pliku konfiguracyjnego za pomocą dyrektywy „include”.
Przed wprowadzeniem jakichkolwiek zmian, zaleca się wykonanie kopii zapasowej oryginalnego pliku konfiguracyjnego:
sudo cp /etc/squid/squid.conf{,.orginal}
Aby rozpocząć konfigurację instancji squida, otwórz plik w edytorze tekstu:
sudo nano /etc/squid/squid.conf
Domyślnie, squid jest ustawiony na nasłuchiwanie na porcie 3128
na wszystkich interfejsach sieciowych na serwerze.
Jeśli chcesz zmienić port i ustawić interfejs nasłuchujący, znajdź linię zaczynającą się od http_port
i podaj adres IP interfejsu oraz nowy port. Jeśli nie zostanie określony żaden interfejs, Squid będzie nasłuchiwał na wszystkich interfejsach.
# Squid normally listens to port 3128http_port IP_ADDR:PORT
Uruchamianie Squida na wszystkich interfejsach i na domyślnym porcie powinno być w porządku dla większości użytkowników.
Squid pozwala kontrolować, w jaki sposób klienci mogą uzyskać dostęp do zasobów sieciowych za pomocą list kontroli dostępu (ACL). Domyślnie, dostęp jest dozwolony tylko z localhost.
Jeśli wszyscy klienci, którzy używają proxy mają statyczne adresy IP, najprostszą opcją ograniczenia dostępu do serwera proxy jest stworzenie ACL, która będzie zawierała dozwolone IP. W przeciwnym razie można ustawić squida tak, aby używał uwierzytelniania.
Zamiast dodawać adresy IP w głównym pliku konfiguracyjnym, utwórz nowy dedykowany plik, który będzie zawierał dozwolone IP:
192.168.33.1# All other allowed IPs
Po wykonaniu tych czynności, otwórz główny plik konfiguracyjny i utwórz nowy ACL o nazwie allowed_ips
(pierwsza podświetlona linia) i zezwól na dostęp do tego ACL używając dyrektywy http_access
(druga podświetlona linia):
# ...acl allowed_ips src "/etc/squid/allowed_ips.txt"# ...#http_access allow localnethttp_access allow localhosthttp_access allow allowed_ips# And finally deny all other access to this proxyhttp_access deny all
Porządek reguł http_access
jest ważny. Upewnij się, że dodajesz linię przed http_access deny all
.
Dyrektywa http_access
działa w podobny sposób jak reguły firewalla. Squid czyta reguły od góry do dołu, a kiedy reguła pasuje, reguły poniżej nie są przetwarzane.
Kiedy dokonasz zmian w pliku konfiguracyjnym, musisz zrestartować usługę Squida, aby zmiany zaczęły obowiązywać:
sudo systemctl restart squid
Uwierzytelnianie Squida #
Jeśli ograniczanie dostępu na podstawie IP nie działa w twoim przypadku, możesz skonfigurować Squida tak, aby używał back-endu do uwierzytelniania użytkowników. Squid obsługuje Sambę, LDAP, oraz HTTP basic auth.
W tym przewodniku będziemy używać basic auth. Jest to prosta metoda uwierzytelniania wbudowana w protokół HTTP.
Aby wygenerować zaszyfrowane hasło, użyj narzędzia openssl
. Poniższe polecenie dołącza parę USERNAME:PASSWORD
do pliku /etc/squid/htpasswd
:
printf "USERNAME:$(openssl passwd -crypt PASSWORD)\n" | sudo tee -a /etc/squid/htpasswd
Na przykład, aby utworzyć użytkownika „josh” z hasłem „P@ssvv0rT
„, należy uruchomić:
printf "josh:$(openssl passwd -crypt 'P@ssvv0rd')\n" | sudo tee -a /etc/squid/htpasswd
josh:QMxVjdyPchJl6
Kolejnym krokiem jest włączenie podstawowego uwierzytelniania HTTP i dołączenie pliku zawierającego dane uwierzytelniające użytkownika do pliku konfiguracyjnego squida.
Otwórz główną konfigurację i dodaj następujące elementy:
sudo nano /etc/squid/squid.conf
# ...auth_param basic program /usr/lib/squid3/basic_ncsa_auth /etc/squid/htpasswdauth_param basic realm proxyacl authenticated proxy_auth REQUIRED# ...#http_access allow localnethttp_access allow localhosthttp_access allow authenticated# And finally deny all other access to this proxyhttp_access deny all
Pierwsze trzy wyróżnione linie tworzą nową ACL o nazwie authenticated
, a ostatnia wyróżniona linia zezwala na dostęp uwierzytelnionym użytkownikom.
Restart usługi Squid:
sudo systemctl restart squid
Konfiguracja zapory sieciowej #
Aby otworzyć porty Squid, włącz profil UFW
’Squid':
sudo ufw allow 'Squid'
Jeśli Squid działa na innym, nie-domyślnym porcie, na przykład 8888
możesz zezwolić na ruch na tym porcie za pomocą: sudo ufw allow 8888/tcp
.
Konfigurowanie przeglądarki do korzystania z proxy #
Teraz, gdy masz już skonfigurowany Squid, ostatnim krokiem jest skonfigurowanie preferowanej przeglądarki do korzystania z niego.
Firefox #
Poniższe kroki są takie same dla Windows, macOS i Linux.
-
W prawym górnym rogu kliknij na ikonę hamburgera
☰
, aby otworzyć menu Firefoksa: -
Kliknij na link
⚙ Preferences
. -
Przewiń w dół do sekcji
Network Settings
i kliknij przyciskSettings...
. -
Otworzy się nowe okno.
- Wybierz przycisk radiowy
Manual proxy configuration
. - Wprowadź adres IP swojego serwera Squid w polu
HTTP Host
oraz3128
w poluPort
. - Zaznaczyć pole wyboru
Use this proxy server for all protocols
. - Kliknąć przycisk
OK
, aby zapisać ustawienia.
- Wybierz przycisk radiowy
W tym momencie, Twój Firefox jest skonfigurowany i możesz przeglądać Internet przez proxy Squid. Aby to sprawdzić, otwórz google.com
, wpisz „what is my ip” i powinieneś zobaczyć swój adres IP serwera Squid.
Aby przywrócić domyślne ustawienia, przejdź do Network Settings
, wybierz Use system proxy settings
przycisk radiowy i zapisz ustawienia.
Istnieje kilka wtyczek, które mogą również pomóc w konfiguracji ustawień proxy Firefoksa, takich jak FoxyProxy.
Google Chrome #
Google Chrome używa domyślnych ustawień proxy systemu. Zamiast zmieniać ustawienia proxy systemu operacyjnego, możesz użyć dodatku, takiego jak SwitchyOmega lub uruchomić przeglądarkę Chrome z wiersza poleceń.
Aby uruchomić Chrome przy użyciu nowego profilu i połączyć się z serwerem Squid, użyj następującego polecenia:
Linux :
/usr/bin/google-chrome \ --user-data-dir="$HOME/proxy-profile" \ --proxy-server="http://SQUID_IP:3128"
macOS :
"/Applications/Google Chrome.app/Contents/MacOS/Google Chrome" \ --user-data-dir="$HOME/proxy-profile" \ --proxy-server="http://SQUID_IP:3128"
Windows :
"C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" ^ --user-data-dir="%USERPROFILE%\proxy-profile" ^ --proxy-server="http://SQUID_IP:3128"
Profil zostanie utworzony automatycznie, jeśli nie istnieje. W ten sposób możesz uruchomić wiele instancji Chrome w tym samym czasie.
Aby potwierdzić, że serwer proxy działa poprawnie, otwórz google.com
, i wpisz „what is my ip”. IP pokazane w przeglądarce powinno być adresem IP Twojego serwera.
Wnioski #
Squid jest jednym z najpopularniejszych serwerów cache proxy. Poprawia szybkość działania serwera WWW i może pomóc w ograniczeniu dostępu użytkowników do Internetu.
Pokazaliśmy, jak zainstalować i skonfigurować Squida na Ubuntu 20.04 oraz jak skonfigurować przeglądarkę, aby z niego korzystała.
Więcej informacji na ten temat można znaleźć na stronie internetowej.