Squid – это веб-прокси-приложение с различными конфигурациями и использованием.
Squid имеет большое количество элементов управления доступом и поддерживает различные протоколы, такие как HTTP, HTTPS, FTP и SSL.
В этом руководстве мы увидим, как использовать Squid в качестве HTTP-прокси.
Настройка
Прокси-сервер может быть программным или аппаратным, например прокси-сервер Bluecoat.
В этом руководстве мы настроим прокси как программное обеспечение на виртуальном устройстве.
Выбранное программное обеспечение будет Squid, но вы можете использовать широкий спектр других услуг.
Настройка для этой статьи:
10.10.10.1.2 - proxy server. 10.10.10.1.3 - Will redirect/cache traffic via the proxy server.
Шаг 1. Установите и включите squid
Установите необходимые пакеты для прокси-сервера squid и включите их при загрузке.
# yum install squid # systemctl enable squid # systemctl start squid
Если вы получили следующую ошибку:
Job for squid.service failed because the control process exited with error code. See "systemctl status squid.service" and "journalctl -xe" for details.
Убедитесь, что у вас установлена последняя версия openssl с:
# yum update openssl
После этого можно запустить squid:
# systemctl start squid
Шаг 2. Настройте Squid для прослушивания на обоих портах 3128 и 8080
Отредактируйте файл конфигурации squid /etc/squid/squid.conf и добавьте 2 директивы http_port для портов 3128 и 8080, как показано ниже:
# vim /etc/squid/squid.conf # Squid normally listens to port 3128 http_port 3128 http_port 8080
Перезапустите сервис squid, чтобы изменения вступили в силу.
# systemctl restart squid
Убедитесь, что Squid запущен:
# ps auxwwf | grep [s]quid root 15334 0.0 0.0 86028 3796 ? Ss 08:55 0:00 /usr/sbin/squid -f /etc/squid/squid.conf squid 15336 0.0 0.2 99676 16740 ? S 08:55 0:00 \_ (squid-1) -f /etc/squid/squid.conf squid 15337 0.0 0.0 27388 1216 ? S 08:55 0:00 \_ (logfile-daemon) /var/log/squid/access.log
Убедитесь, что порты прослушивают сервер, на котором вы установили squid.
# ss -npl | egrep '3128|8080' | grep squid tcp LISTEN 0 128 :::8080 :::* users:(("squid",pid=15336,fd=12)) tcp LISTEN 0 128 :::3128 :::* users:(("squid",pid=15336,fd=11))
Вы можете добавить требуемые правила iptables или для целей тестирования вы можете временно отключить firewalld.
# firewall-cmd --add-port=3128/tcp --permanent # firewall-cmd --add-port=8080/tcp --permanent
Где,
10.10.10.1.3 – это ip сервера, который будет подключаться к прокси.
Ниже приведены правила iptables, если вы используете iptables.
-A INPUT -s 10.10.10.1.3/24 -m state --state NEW -m tcp -p tcp --dpport 3128 -j ACCEPT -A INPUT -s 10.10.10.1.3/24 -m state --state NEW -m tcp -p tcp --dpport 80808 -j ACCEPT
Шаг 3. Настройте второй сервер для использования squid
# export http_proxy=http://${PROXY_FQDN}:8080
На удаленном сервере, чтобы убедиться, что вы можете подключиться к прокси, вы можете запустить curl на google.com.
# curl -v http://google.com | head -1 * About to connect() to proxy 10.10.10.1.2 port 8080 (#0) * Trying ... % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0* Connected to 10.10.10.1.2 ( 10.10.10.1.2) port 8080 (#0) > GET http://google.com/ HTTP/1.1 > User-Agent: curl/7.29.0 > Host: google.com > Accept: */* > Proxy-Connection: Keep-Alive > < HTTP/1.1 301 Moved Permanently < Server: AkamaiGHost < Content-Length: 0 < Location: https://google.com/ < Date: Tue, 15 May 2018 03:46:10 GMT < X-Cache: TCP_MISS from a117-104-136-128.deploy.akamaitechnologies.com (AkamaiGHost/9.3.0.3-22245996) (-) < EJ-HOST: ... < X-Akamai-Request-ID: 19d48d66 < X-Cache: MISS from proxyhostname < X-Cache-Lookup: MISS from proxyURL:3128 < Via: 1.1 proxyURL (squid/3.5.20) < Connection: keep-alive
Настройте squid на использование SSL (необязательно, если вы хотите использовать https)
Чтобы принимать трафик https, мы настроим squid с сертификатом сервера.
# mkdir /etc/squid/ssl_cert/ # cd /etc/squid/ssl_cert/ # openssl req -new -newkey rsa:2048 -sha256 -days 365 -nodes -x509 -extensions v3_ca -keyout myCA.pem -out myCA.pem # /usr/lib64/squid/ssl_crtd -c -s /var/lib/ssl_db # chown -R squid:squid /var/lib/ssl_db/ /etc/squid/ssl_cert/
Затем мы редактируем конфигурацию squid:
# vim /etc/squid/squid.conf # for test purposes we allow all #http_access deny all http_access allow all sslcrtd_children 50 startup=5 idle=1 ssl_bump server-first all http_port 3128 #additional logging sslproxy_cert_error allow all sslproxy_flags DONT_VERIFY_PEER # Squid normally listens to port 3128 https_port 3129 intercept ssl-bump generate-host-certificates=on dynamic_cert_mem_cache_size=4MB cert=/etc/squid/ssl_cert/myCA.pem options=NO_SSLv3
Перезапустите сервер squid и просмотрите файл журнала кеша.
# service squid restart # tailf /var/log/squid/cache.log tailf /var/log/squid/cache.log 2018/05/23 12:57:09 kid1| Max Swap size: 0 KB 2018/05/23 12:57:09 kid1| Using Least Load store dir selection 2018/05/23 12:57:09 kid1| Set Current Directory to /var/spool/squid 2018/05/23 12:57:09 kid1| Finished loading MIME types and icons. 2018/05/23 12:57:09 kid1| HTCP Disabled. 2018/05/23 12:57:09 kid1| Squid plugin modules loaded: 0 2018/05/23 12:57:09 kid1| Adaptation support is off. 2018/05/23 12:57:09 kid1| Accepting HTTP Socket connections at local=[::]:3128 remote=[::] FD 22 flags=9 2018/05/23 12:57:09 kid1| Accepting NAT intercepted SSL bumped HTTPS Socket connections at local=[::]:3129 remote=[::] FD 23 flags=41