Всем привет!
Данная запись не преследует цели описать конфигурацию кэширующего и прозрачного squid сервера с файрволлом или интеграцией с AD. Родилась идея настроить на VPS прокси сервачок для личных нужд с жирным каналом. Для этого я взял за основу систему FreeBSD 12. Начнем:
# uname -srm FreeBSD 12.0-RELEASE-p8 amd64
Конфиг squid(на эту дату версия 4.8)
http_port ваш_ip:3128 auth_param basic program /usr/local/libexec/squid/basic_ncsa_auth /usr/local/etc/squid/passwd auth_param basic children 5 auth_param basic realm please sug min den auth_param basic credentialsttl 2 hours visible_hostname "proxy" acl ncsa_users proxy_auth REQUIRED acl SSL_ports port 443 acl Safe_ports port 80 # http acl Safe_ports port 21 # ftp acl Safe_ports port 443 # https acl Safe_ports port 70 # gopher acl Safe_ports port 210 # wais acl Safe_ports port 1025-65535 # unregistered ports acl Safe_ports port 280 # http-mgmt acl Safe_ports port 488 # gss-http acl Safe_ports port 591 # filemaker acl Safe_ports port 777 # multiling http acl CONNECT method CONNECT http_access deny !Safe_ports http_access deny CONNECT !SSL_ports http_access deny to_localhost http_access allow ncsa_users http_access deny all access_log /var/log/squid/access.log squid logfile_rotate 0 via off forwarded_for off follow_x_forwarded_for deny all request_header_access X-Forwarded-For deny all #logformat squid %tl %6tr %>a %Ss/Hs %<st %rm %ru %un %Sh/%<A %mt client_db on dns_defnames on httpd_suppress_version_string on retry_on_error on uri_whitespace strip strip_query_terms off cache deny all #cache_dir null /tmp ident_lookup_access deny all #deny_info [URL]http://proxy/blocked.html[/URL] adsites acl ads dstdom_regex "/usr/local/etc/squid/ad_block.txt" http_access deny ads
Для создания файла с учетками нужна программка htpasswd, а ставить apache из-за одной проги не комильфо. В портах есть такая штука security/py-htpasswd или можно установить из пакетов, кому как удобнее.
Далее организовать ссылочку:
# ln -s /usr/local/bin/htpasswd.py /usr/local/bin/htpasswd # rehash
Делаем учетку с паролем:
#htpasswd -cb /usr/local/etc/squid/passwd user password
Почти готово. Теперь надо в файлик ad_block.txt закачать ссылки по рекламе для блокировки. Взял данную фишку отсюда.
Создаем скрипт:
curl -sS -L --compressed "http://pgl.yoyo.org/adservers/serverlist.php?hostformat=nohtml&showintro=0&mimetype=plaintext" > /usr/local/etc/squid/ad_block.txt ## refresh squid /usr/local/sbin/squid -k reconfigure
Делаем исполняемым:
# chmod +x ad_servers_newlist.sh
И в cron его(я использую рутовый):
# crontab -e 35 5 * * */3 /root/ad_servers_newlist.sh >> /dev/null 2>&1