Введение
Squid — это полностью кэшированный прокси, который поддерживает популярные сетевые протоколы, такие как HTTP, HTTPS, FTP и другие. Использование Squid для подключения к веб-серверу может значительно повысить производительность сервера за счет кэширования повторяющихся запросов, фильтрации веб-трафика и доступа к контенту с географическим ограничением.
В этом руководстве объясняется, как настроить Squid на CentOS 7 и настроить веб-браузеры Firefox и Google Chrome для использования прокси-сервера.
Установка Squid на CentOS
Пакет Squid включен в репозитории CentOS 7 по умолчанию. Чтобы установить его, выполните следующую команду от имени пользователя sudo:
sudo yum install squid
После завершения установки запустите и включите службу Squid:
sudo systemctl start squid
sudo systemctl enable squid
Чтобы убедиться, что установка прошла успешно, введите следующую команду, которая распечатает статус службы:
sudo systemctl status squid
● squid.service - Squid caching proxy
Loaded: loaded (/usr/lib/systemd/system/squid.service; enabled; vendor preset: disabled)
Active: active (running) since Sat 2019-09-01 13:17:18 UTC; 10s ago...
Конфигурация кальмара
Squid можно настроить, отредактировав файл /etc/squid/squid.conf. Дополнительные файлы с параметрами конфигурации можно включить с помощью директивы include.
Прежде чем вносить какие-либо изменения, создайте резервную копию исходного файла конфигурации с помощью команды cp:
sudo cp /etc/squid/squid.conf{,.orginal}
Чтобы отредактировать файл, откройте его в текстовом редакторе:
sudo nano /etc/squid/squid.conf
По умолчанию Squid настроен на прослушивание порта 3128 на всех сетевых интерфейсах сервера.
Если вы хотите изменить порт и настроить прослушивающий интерфейс, найдите строку, начинающуюся с http_port, и укажите IP-адрес интерфейса и новый порт. Если интерфейс не указан, Squid будет прослушивать все интерфейсы.
# Squid normally listens to port 3128
http_port IP_ADDR:PORT
Запуск Squid на всех интерфейсах и порт по умолчанию подойдет большинству пользователей.
Вы можете контролировать доступ к серверу Squid, используя списки контроля доступа (ACL).
По умолчанию Squid разрешает доступ только с локального хоста и локальной сети.
Если все клиенты, которые будут использовать прокси-сервер, имеют статический IP-адрес, вы можете создать список ACL, в который будут включены разрешенные IP-адреса.
Вместо добавления IP-адресов в основной файл конфигурации мы создадим новый выделенный файл, который будет содержать IP-адреса:
sudo nano /etc/squid/allowed_ips.txt
Добавьте разрешенные IP-адреса:
192.168.33.1
# All other allowed IPs
После этого откройте основной файл конфигурации и создайте новый ACL с именем allow_ips и разрешите доступ к этому ACL с помощью директивы http_access.
Снова откройте основной файл конфигурации:
sudo nano /etc/squid/squid.conf
Включите следующие строки:
- acl allow_ips src "/etc/squid/allowed_ips.txt"
- http_access разрешить разрешённые_ips
#...
acl allowed_ips src "/etc/squid/allowed_ips.txt"
#...
http_access allow localnet
http_access allow localhost
http_access allow allowed_ips
# And finally deny all other access to this proxy
http_access deny all
Порядок правил http_access важен. Убедитесь, что вы добавили строку перед http_access deny all.
Директива http_access работает аналогично правилам брандмауэра. Squid читает правила сверху вниз, и когда правило соответствует следующим правилам, они не обрабатываются.
Всякий раз, когда в файл конфигурации вносятся изменения, сервис Squid должен быть перезапущен, чтобы изменения вступили в силу:
sudo systemctl restart squid
Squid-аутентификация
Squid может использовать различные серверные части, включая базовую аутентификацию Samba, LDAP и HTTP для аутентифицированных пользователей.
В этом примере мы настроим Squid на использование базовой аутентификации. Это простой метод аутентификации, встроенный в протокол HTTP.
Мы будем использовать утилиту openssl для генерации паролей и добавления имени пользователя: пароль в файл /etc/squid/htpasswd с помощью команды tee, как показано ниже:
printf "USERNAME:$(openssl passwd -crypt PASSWORD)\n" | sudo tee -a /etc/squid/htpasswd
Давайте создадим пользователя с именем «centos» и паролем « 1dk232_Z »:
printf "centos:$(openssl passwd -crypt '1dk232_Z')\n" | sudo tee -a /etc/squid/htpasswd
Вы должны получить выходное сообщение, подобное следующему:
centos:iWTMPC8kxGssA
Следующим шагом является включение базовой аутентификации HTTP. Снова откройте основной файл конфигурации:
sudo nano /etc/squid/squid.conf
Включите следующие строки:
- auth_param основная программа /usr/lib64/squid/basic_ncsa_auth/etc/squid/htpasswd
- auth_param основной прокси области
- acl аутентифицированный proxy_auth ТРЕБУЕТСЯ
- http_access разрешить аутентифицированный
Следовательно:
#...
auth_param basic program /usr/lib64/squid/basic_ncsa_auth /etc/squid/htpasswd
auth_param basic realm proxy
acl authenticated proxy_auth REQUIRED
#...
http_access allow localnet
http_access allow localhost
http_access allow authenticated
# And finally deny all other access to this proxy
http_access deny all
Первые три строки создают новый ACL с именем « аутентифицированный», а последняя строка разрешает доступ для аутентифицированных пользователей.
Перезапустите службу Squid:
sudo systemctl restart squid
Конфигурация брандмауэра
Если вы используете брандмауэр, вам нужно открыть порт 3128. Для этого выполните следующие команды:
sudo firewall-cmd --permanent --add-port=3128/tcp
firewall-cmd --reload
Если Squid работает на другом порту, отличном от порта по умолчанию, вам нужно будет разрешить трафик на этом порту с помощью.
Настройка браузера для использования прокси
В этом разделе мы увидим, как настроить ваш браузер для использования прокси-сервера Squid.
Fire Fox
Следующие шаги одинаковы для Windows, macOS и Linux.
- В правом верхнем углу щелкните значок гамбургера ☰, чтобы открыть меню Firefox:
- Щелкните ссылку ⚙ Настройки.
- Прокрутите вниз до раздела « Настройки сети » и нажмите кнопку « Настройки… ».
Откроется новое окно.
- Выберите опцию Ручная кнопка настройки прокси.
- Введите IP-адрес сервера Squid в поле хоста HTTP и 3128 в поле Порт.
- Установите флажок Использовать этот прокси-сервер для всех протоколов.
- Нажмите кнопку ОК, чтобы сохранить настройки.
На этом этапе Firefox настроен, и вы можете выходить в Интернет через прокси-сервер Squid. Чтобы проверить это, откройте google.com, введите « find is my ip », и вы должны увидеть IP-адрес своего сервера Squid.
Чтобы восстановить настройки по умолчанию, снова перейдите в « Настройки сети», нажмите кнопку « Использовать настройки системного прокси» и сохраните настройки.
Гугл Хром
Google Chrome использует системные настройки прокси-сервера по умолчанию. Вместо изменения настроек прокси-сервера операционной системы вы можете использовать надстройку, например SwitchyOmega, или запустить веб-браузер Chrome из командной строки.
Чтобы запустить Chrome с новым профилем и подключиться к серверу Squid, используйте следующую команду:
Линукс:
/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"
Окна:
"C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" ^
--user-data-dir="%USERPROFILE%\proxy-profile" ^
--proxy-server="http://SQUID_IP:3128"
Профиль будет создан автоматически, если он не существует. Таким образом, вы можете запускать несколько экземпляров Chrome одновременно.
Чтобы проверить это, откройте google.com, введите « find is my ip », и вы должны увидеть IP-адрес своего сервера Squid.
Вывод
Вы узнали, как установить Squid на CentOS 7 и как настроить браузер для его использования. Squid — один из самых популярных прокси-кэш-серверов. Это повышает скорость веб-сервера и может помочь вам ограничить доступ пользователей к Интернету.