Кальмар Це, мабуть, найвідоміший і популярний кешування проксі -сервера з відкритим кодом. Кальмари проксі -сервера підтримують велику кількість протоколів кешування (ICP, HTCP, CARP, WCCP), дозволяє проводити трафік протоколів HTTP, HTTPS, FTP тощо.D. Кальмар легко масштабується, його можна використовувати для фільтрації вмісту та контролю швидкості доступу до сайтів для різних категорій користувачів, він підтримує автентифікацію користувачів (включаючи користувачів Active Directory через LDAP). У цій статті ми розглянемо типову установку проксі -сервера кальмарів на Linux.
Зміст:
- Установка проксі -сервера кальмців у Linux
- Налаштування кешування кеш -кешування
Установка проксі -сервера кальмців у Linux
Встановіть пакет кальмарів на хост за допомогою менеджера пакетів. Залежно від версії Linux, вам потрібно виконати одну з наступних команд:
- Oracle, Rocky, Centos або Red Hat Enterprise Linux:
DNF -установка -Squid
- Suse Linux Enterprise Server:
Zypper встановити кальмарів
- Ubuntu або debian:
Apt-get встановити кальмарів
Якщо ви хочете використовувати автентифікацію користувача у кальмарів, вам потрібно додатково встановити пакет:
- В rhel/centos/fedora:
Dnf -enstall httpd -tools
- В Debian/Ubuntu:
Sudo apt Встановіть apache2-utils
Додайте послугу кальмарів до Linux через SystemD, запустіть службу та перевірте статус:
Systemctl Увімкнути кальмари
Systemctl запуск кальмарів
Systemctl статус кальмарів
Ввести всі варіанти, за допомогою яких кальмари збираються:
Кальмари -В
Кеш кальмарів: версія 4.15 Назва служби: кальмари Цей двійковий використовує OpenSl 1.1.1K FIPS 25 березня 2021. За юридичними обмеженнями щодо розподілу див. Https: // www.Відкриття.Org/джерело/ліцензія.HTML налаштування параметрів: '-build = x86_64-redhat -linux-gnu "-host = x86_64-redhat-linux-gnu" -program-prefix = "-prefix =/usr" -exec-prefix = //// usr "-bindir =/usr/bin" -sbindir =/usr/sbin "-sysconfdir =/тощо" -dateadir =/usr/share "-incloudedir =/usr/anclude" -libdir =/usr/lib64 "-libexecdir = /Usr/libexec "-localstatedir =/var" -sharedStatedir =/var/lib "-mandir =/usr/share/man" -infodir =/usr/share/schaire/info "-libexecdir =/usr/lib64/кальмарі "-Datadir =/usr/share/squid" -sysconfdir =/etc/squid "-with-logdir =/var/log/squid"-with-pidfile =/var/run/squid.Pid "-disable-Dependensy-відстеження" -enable-eui "-enable-follow-X-forwaded-for" -enable-abasic = db, fake, getpwnam, ldap, ncsa, pam, pop3, radius, sasl, smb, Smb_lm "-enable-auth-ntlm = smb_lm, fake" -enable-auth-digest = файл, ldap "-enable-auth-negotiate = kerberos"-enable-external-acl-helpers = ldap_group, time_quota, session, unix_group, wbinfo_group, kerberos_ldap_group "-Увімкнути-storeid-rewrite-helpers = файл"-увімкнути-кеш-сітки "-увімкнути-cachemgr-hostname = localhost"-enable-delay-pools "-enable-epoll" -enable-- ICAP-розважальний "-ене-ідентичність" -enable-linux-netfilter "-enable -moval-polycies = купа, lru"-enable-snmp "-enable-ssl" -enable-ssl-crtd "-enable-storeio = Aufs, diskd, ufs, rock "-enable-diskio" -enable-wccpv2 "-enable- esi" -enable-ecap "-it-aio" -з-default-user = кальмари "-з openssl" -with-- Pthreads "-disable-arch-nativate" -disable-sever-scert-validators "-зSwapdir =/var/spool/squid "build_alias = x86_64 -medhat -linux -gnu" host_alias = x86_64 -dedhat -linux -gnu "cflags = -o2 -2 -pipe -werror = format -sefifa_wp, —difyritis, —difyrity = 2 -wp, -d_glibcxx_assertions -fexceptions -fstack-protector-sstrong -grecord-gcc-switches -specs =/usr/lib/rpm/redhat/redhat-hard-hc1 -specs =/usr/lib/rpm/redhat/redhat -Annobin -cc1 -m64 -mtune = generic -fasynchronous -unind -таблиці -fstack -clash -захист "ldflags = -wl, relro -wl, -z, зараз -specs =/usr/usr/usr/usr/usr/usr/usr/usr/usr/usr/usr/usr/usr/usr USR LIB/RPM/Redhat/Redhat -Hardened -LD "CXXFLAGS = -O2 -g -pipe -Wall -werror = Format -Secury -wp, -D_Fortify_SURCE = 2 -wP, -GLIBCXX_ASSERTIONS -FROTIRTIONS -FROTACPTIONSPTIONSPTIONSPTIONTION -GCCC-SWITches - Specs =/usr/lib/rpm/redhat/redhat-harded-cc1 -specs =/usr/lib/rpm/redhat-annobin-cc1 -m64 -mtune-fasynchronchronochronoc -fstack-class-props-Propsection "pkg_config_path =: usr/lib64/pkgconfig:/usr/share/pkgconfig '
Налаштування кешування кеш -кешування
За замовчуванням кальмари використовують файл конфігурації/тощо/кальмари/кальмари.Конфігурація.
Перш ніж редагувати цей файл, створіть його копію та захистіть її від запису: Sudo cp/etc/кальмари/кальмари.Conf/etc/кальмари/кальмари.Конфігурація.Оригінальний
Sudo chmod a-w/etc/кальмари/кальмари.Конфігурація.Оригінальний
Надалі ми можемо повернутися до початкового файлу конфігурації або використовувати його як каталог каталогу.
Щоб відредагувати файл конфігурації кальмарів, виконайте:
Sudo mcedit/etc/кальмари/кальмари.Конфігурація
На початку файлу конфігурації кальмарів список контролю доступу, який визначає IP -адреси (підмереж) клієнтів, з яких дозволено підключитися до проксі -сервера.
Наприклад, ви хочете дозволити доступ лише з локальної мережі. Додайте директиву:
ACL LocalNet SRC 192.168.10.0/24
Залишилися лінії ACL LocalNet можна зробити.
Трохи нижче в конфігурації - це директива, яка дозволяє отримати доступ до цих мереж:
HTTP_ACCESS дозволяє LocalNet
За замовчуванням кальмари приймають з'єднання користувача на порту 3128. Ви можете змінити цей порт у Директиві http_port. Я повіслю кальмарів на порту 4555:
http_port 4555
Якщо ви хочете використовувати проксі -сервер для кешування, вам потрібно налаштувати каталог кешу:
Cache_dir ufs/var/spool/squid 5120 32 256
- 5120 - розмір кешу в МБ
- 32 - Кількість каталогів першого рівня для кешу, 256 - Каталоги другого рівня
Щоб створити на диску структуру папки під кешем кальмарів, виконайте команду:
Кальмари -z
Для аутентифікації користувачів на кальмарів ви можете використовувати найпростішу основну аутентифікацію. Спочатку створіть файл для зберігання користувачів та паролів:
Sudo touch/etc/squid/passwd && sudo chown squid/etc/squid/passwd
Щоб додати користувача до цього файлу, виконайте команду:
Sudo htpasswd -c/etc/squid/passwd username1
Додаючи наступних користувачів, вам не потрібно вказувати параметр -c параметри.
Потім додайте наступні рядки до початку кальмарів файлів конфігурації.Conf:
#использовать basic auth и указать путь к файлу с паролями auth_param basic program /usr/lib64/squid/basic_ncsa_auth /etc/squid/passwd # количество одновременных подключений auth_param basic children 5 auth_param basic realm Squid Basic Authentication # длительность сессии без повторного ввода логина и Auth_param basic redentalystt 8 годин auth_param basic cassesensitiveacl auth_users proxy_auth Repated http_access дозволити auth_users
У різних дистриб'юторах Linux шлях до файлу basic_ncsa_auth може відрізнятися:
- /usr/lib64/squid/basic_ncsa_auth (Oracle Linux, Rhel, Centos)
- /usr/lib/squid/basic_ncsa_auth (Debian, Ubuntu, Kali Linux)
Auth_param basic програма/usr/lib64/squid/basic_auth -r -r -b "dc = winitpro, dc = ru" -d "[email protected] "-w" -f "samaccountname =%s"
Основний недолік аутентифікації в TOI, що пароль передається у вигляді тексту зашифровано за допомогою base64 (легко розшифровано, див. Приклад у статті про надсилання листів через Telnet з аутентифікацією). Тому для інтеграції з Active Directory краще використовувати аутентифікацію Kerberos у кальмарів. Якщо ні, ви можете налаштувати автентифікацію HTTP Digest у кальмарах. Але це вже поза цією статтею.
В кінці файлу конфігурації за допомогою директив HTTP_ACCESS встановлюються правила вирішення та заборони. Наприклад, дозволити доступ лише до автентифікованих користувачів:
http_access дозволити localhost http_access дозволити автентифіковано http_access заперечувати все
У кальмарів ви можете заблокувати певні сайти. Створіть файл зі списком заборонених сайтів:
Sudo vi/etc/squid/blocked_sites
Додайте до файлу список сайтів, доступ, до якого потрібно заборонити:
Facebook.Com twitter.Com Instagram.Com
І додайте такі рядки до кальмарів файлів конфігурації:
ACL blocked_sites dstdomain/etc/squid/blocked_sites http_access deny blocked_sites
Після внесення змін до файлу конфігурації кальмарів потрібно перевірити його на наявність синтаксичних помилок:
Sudo squid -k parse
Якщо помилок немає, повторно прочитайте конфігурацію кальмарів для використання нових налаштувань (вам не потрібно перезавантажувати демон):
Sudo squid -k переправити
Дозвольте у Fayrvol з'єднання з портом проксі -сервера (у нашому прикладі це TCP 4555). Якщо ви використовуєте Firewalld, додайте резолюцію наступним чином:
Брандмауер-CMD -Zone = Public-ADD-PORT = 4555/TCP
Брандмауер -CMD -reLoad
Якщо ваш сервер Linux розташований у зовнішньому постачальника (AWS, Azure, Oracle Cloud та T.D.), не забудьте додати роздільну здатність для порту 4555 до відповідної групи безпеки.
Перевірте, чи слухає кальмари порту, вказаний у Директиві http_port:
Netstat -tulnp
Використовуючи Curl, ви можете перевірити доступність проксі -сервера кальмарів:
Curl -x http: // xx.Xx.Xx.Xx: 4555 -l http: // google.Com
Якщо з’являється помилка Необхідна автентифікація/ доступ відмови
, Тож вам потрібно передати ім'я користувача та пароль для підключення до кальмарів:Curl -x http: // xx.Xx.Xx.Xx: 4555 -proxy -user proxyuser: tgftm0xdvjnm -i http: // google.Com
Для аналізу журналів кальмарів використовуйте команду в режимі реального часу:
Sudo tail -f/var/log/squid/доступ.журнал
Якщо браузер відображає помилку Проксі -сервер відмовляється
, І в доступі до журналу.Журнал - це рядок TCP_DENIED/403 4041 Connect
, Перевірте свій ACL.
Завдяки успішній автентифікації користувача, у журналі кальмарів з’явиться повідомлення TCP_TUNNEL/200 39 Connect WinitPro.RU: 443 Proxyusername Hier_direct/xx.Xx.Xx.Xx
або TCP_MISS/200
.
Не забудьте встановити налаштування проксі -сервера у браузерах на комп'ютерах користувачів. Встановіть IP -адресу (ім'я) хоста та порту кальмарів у налаштуваннях браузера. Ви можете розподілити налаштування проксі через GPO на комп'ютери Windows.