Установка Squid Proxy на CentOS 7

by Блог хостинга X5X.RU
Установка Squid Proxy на CentOS 7

Что такое прокси-сервер?

По своей сути, прокси-сервер находится между двумя устройствами (Вашим компьютером и конечным серверов) и работает как промежуточный слой, обеспечивая тем самым контроль доступа, фильтрацию, кэширование, ну и, конечно же, сокрытие IP-адреса Вашего компьютера.

Squid является открытым программным обеспечением для кэширования и фильтрации веб-запросов, он поддерживает множество протоколов и позволяет сократить время загрузки страниц, а также управлять доступом к сайтам.

Подготовка

Squid не требует какого-либо специального оборудования и его можно установить на любой виртуальный или выделенный сервер с Linux. 

В данной статье мы рассмотрим установку на CentOS 7, поэтому Вы должны иметь сервер с этой ОС, а также root доступ к этому серверу. 

Установка Squid

Перед установкой любых пакетов рекомендуется обновить программное обеспечение системы и список пакетов, это можно сделать командой:

yum -y update

Далее, установим репозиторий EPEL, в которой содержится большинство дополнительного ПО:

yum -y install epel-release

Далее вновь обовим список пакетов:

yum -y update

Теперь можно приступать к установка Squid:

yum -y install squid

После завершения установки нужно запустить Squid и включить автоматический запуск при загрузке системы:

systemctl enable squid
systemctl start squid

Убедиться в правильности установки Squid можно, например, проверив его версию командой:

squid -v

Вы должны увидеть что-то вроде этого:

Squid Cache: Version 3.3.8
configure options: '--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=/etc' '--datadir=/usr/share' '--includedir=/usr/include' '--libdir=/usr/lib64' '--libexecdir=/usr/libexec' '--sharedstatedir=/var/lib' '--mandir=/usr/share/man' '--infodir=/usr/share/info' '--disable-strict-error-checking' '--exec_prefix=/usr' '--libexecdir=/usr/lib64/squid' '--localstatedir=/var' '--datadir=/usr/share/squid' '--sysconfdir=/etc/squid' '--with-logdir=$(localstatedir)/log/squid' '--with-pidfile=$(localstatedir)/run/squid.pid' '--disable-dependency-tracking' '--enable-eui' '--enable-follow-x-forwarded-for' '--enable-auth' '--enable-auth-basic=DB,LDAP,MSNT,MSNT-multi-domain,NCSA,NIS,PAM,POP3,RADIUS,SASL,SMB,getpwnam' '--enable-auth-ntlm=smb_lm,fake' '--enable-auth-digest=file,LDAP,eDirectory' '--enable-auth-negotiate=kerberos' '--enable-external-acl-helpers=file_userip,LDAP_group,time_quota,session,unix_group,wbinfo_group' '--enable-cache-digests' '--enable-cachemgr-hostname=localhost' '--enable-delay-pools' '--enable-epoll' '--enable-icap-client' '--enable-ident-lookups' '--enable-linux-netfilter' '--enable-removal-policies=heap,lru' '--enable-snmp' '--enable-ssl' '--enable-ssl-crtd' '--enable-storeio=aufs,diskd,ufs' '--enable-wccpv2' '--enable-esi' '--enable-ecap' '--with-aio' '--with-default-user=squid' '--with-filedescriptors=16384' '--with-dl' '--with-openssl' '--with-pthreads' 'build_alias=x86_64-redhat-linux-gnu' 'host_alias=x86_64-redhat-linux-gnu' 'CFLAGS=-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic -fpie' 'LDFLAGS=-Wl,-z,relro -pie -Wl,-z,relro -Wl,-z,now' 'CXXFLAGS=-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic -fpie' 'PKG_CONFIG_PATH=:/usr/lib64/pkgconfig:/usr/share/pkgconfig'

Настройка Squid

Базовый файл конфигурации находится по пути: /etc/squid/squid.conf. Вы можете просмотреть его через любой текстовый редактор, например, nano или же mcedit.

По умолчанию Squid настроен на подключения только через локальную сеть. Поэтому первое, что нужно сделать - настроить подключения с любого иного компьютера по логину и паролю.

Откроем файл конфигурации через nano:

nano /etc/squid/squid.conf

В файле уже будут параметры конфигурации для доступа из локальной сети. Они выглядят таким образом:

acl localnet src 10.0.0.0/8 # RFC1918 possible internal network
acl localnet src 172.16.0.0/12 # RFC1918 possible internal network
acl localnet src 192.168.0.0/16 # RFC1918 possible internal network
acl localnet src fc00::/7 # RFC 4193 local private network range
acl localnet src fe80::/10 # RFC 4291 link-local (directly plugged) machinesacl SSL_ports port 443

Нам нужно разрешить доступ с нашего IP-адреса. Для этого нужно добавить аналогичную ACL-запись в файл конфигурации. Squid поддерживает как конкретные IP-адреса, так и сети по маске. Предположим, что Вашим IP-адресом является адрес 50.0.1.5. Для того, чтобы разрешить доступ только с этого внешнего адреса, нужно добавить строку:

acl localnet src 50.0.1.5/32

Далее сохраните изменения в файле и перезапустите Squid командой:

systemctl restart squid

Настройка авторизации по логину и паролю

Важно настроить доступ к прокси-серверу только по логину и паролю. Важно это из-за того, что при свободном доступе злоумышленники могут использовать Ваш прокси-сервер для незаконных действий, тем самым подменяя свой реальный IP-адрес на адрес Вашего сервера.

Для настройки доступа нужно сначала установить пакет, позволяющий создавать файлы с паролями:

yum -y install httpd-tools

Теперь создадим файл с паролем:

touch /etc/squid/passwd
chown squid /etc/squid/passwd

Теперь нужно поместить в файл связку логина и пароля (в данном случае squiduser будет логином):

htpasswd /etc/squid/passwd squiduser

Программа запросит ввод пароля, который Вы хотите установить:

New password:
Re-type new password:
Adding password for user squiduser

По умолчанию htpasswd использует шифрование паролей методом MD5, поэтому нам нужно разрешить такое шифрование в файле конфигурации Squid.

Откроем файл конфигурации:

nano /etc/squid/squid.conf

Далее добавим следующие строки в файл конфигурации:

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 credentialsttl 2 hours
acl auth_users proxy_auth REQUIRED
http_access allow auth_users

Далее сохраните изменения в файле и вновь перезапустите Squid:

systemctl restart squid

Подключение к прокси-серверу

Для подключения к прокси-серверу перейдите в соответствующее меню настроек в Вашем любимом браузере.

В качестве IP-адреса прокси-сервера введите IP-адрес сервера, на который Вы установили Squid. В качестве порта - 3128. 

После применения настроек браузер запросит логин и пароль от прокси-сервера.

Изменение порта Squid

Для изменения порта Squid в файле конфигурации нужно изменить значение параметра http_port.

Например, для изменения порта на 8765 нужно привести конфигурацию в такой вид:

http_port 8765
October 3, 2018
by Илья К.
How-to