squid 3.5.8 + резак сайтов

Автор M1chA, 16 декабря 2015, 13:57:48

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

M1chA

Подскажите пожалуйста, как решить следующую пробблему.

Дано:

  • Сервер Debian 8.2 x64
  • isc-dhcp-server
  • squid 3.5.8

isc-dhcp-server работает нормаально, айпишники выдает

squid 3.5.8 ставил отсюда http://habrahabr.ru/post/272733/
через tail -f /var/log/squid/access.log видно, что все работает нормально, кроме одного, сайты не блокируются.

Конфиг Кальмара

# локальная сеть компании
acl localnet src 192.168.0.0/24 # RFC1918 possible internal network

# список разрешенных портов
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

# указываем какой dns сервер использовать
dns_nameservers 8.8.8.8

# !Safe_ports - это те порты которые админ считает "безопасными" для прохождения через прокси. Чаще всего это HTTP порты.
http_access deny !Safe_ports

# !SSL_ports - это только те порты, которые участвуют в SSL соединении.
http_access deny CONNECT !SSL_ports

http_access allow localhost manager
http_access deny manager

# разрешаем доступ в интернет для компьютеров локальной сети
http_access allow localnet

# разрешаем доступ в интернет локальной машине т.е. прокси серверу
http_access allow localhost

# всем остальным запрещаем доступ в интернет
http_access deny all

# прозрачный порт указывается опцией intercept
http_port 192.168.0.1:3128 intercept options=NO_SSLv3:NO_SSLv2

# также нужно указать непрозрачный порт, ибо если захотите вручную указать адрес
#прокси в браузере, указав прозрачный порт, вы получите ошибку доступа, поэтому нужно
#указывать непрозрачный порт в браузере, если конечно такое желание будет, к тому же в логах #сыпятся ошибки о том, что непрохрачный порт не указан=)
http_port 192.168.0.1:3130 options=NO_SSLv3:NO_SSLv2

# и наконец, указываем HTTPS порт с нужными опциями
https_port 192.168.0.1:3129 intercept ssl-bump options=ALL:NO_SSLv3:NO_SSLv2 connection-auth=off cert=/etc/squid/squidCA.pem

always_direct allow all
sslproxy_cert_error allow all
sslproxy_flags DONT_VERIFY_PEER

# укажем правило со списком блокируемых ресурсов (в файле домены вида .domain.com)
acl blocked ssl::server_name  "/etc/squid/block"
acl step1 at_step SslBump1
ssl_bump peek step1

# терминируем соединение, если клиент заходит на запрещенный ресурс
ssl_bump terminate blocked
ssl_bump splice all

sslcrtd_program /usr/lib/squid/ssl_crtd -s /var/lib/ssl_db -M 4MB

coredump_dir /var/spool/squid
refresh_pattern ^ftp:           1440    20%     10080
refresh_pattern ^gopher:        1440    0%      1440
refresh_pattern -i (/cgi-bin/|\?) 0     0%      0
refresh_pattern .               0       20%     4320
cache_dir aufs /var/spool/squid 20000 49 256
maximum_object_size 61440 KB
minimum_object_size 3 KB

cache_swap_low 90
cache_swap_high 95
maximum_object_size_in_memory 512 KB
memory_replacement_policy lru
logfile_rotate 4


Файл block

.vk.
.mail.
.vk.com
.mail.ru

Malaheenee

#1
Статью обновили. Мы пакеты сами себе собирали с openssl, все работает, конфиг (с купюрами) такой:
# Allowed networks
# eth0
acl localhost src 11.11.11.11
# wlan0
acl localhost src 22.22.22.22/29

# Allowed ports
acl ssl-ports port 443 # https
acl ssl-ports port 465 # smtp
acl ssl-ports port 993 # imap
acl ssl-ports port 5223 # jabber
acl safe-ports port 80 # http
acl safe-ports port 81 # http
acl safe-ports port 8000 # http
acl safe-ports port 8080 # http
acl safe-ports port 21 # ftp
acl safe-ports port 443 # https
acl safe-ports port 465 # smtp
acl safe-ports port 993 # imap
acl safe-ports port 5223 # jabber
acl CONNECT method CONNECT

# Access settings
http_access deny !safe-ports
http_access deny CONNECT !ssl-ports
http_access allow localhost manager
http_access deny manager
http_access allow localhost
http_access deny all

# Transparent proxy
http_port 0.0.0.0:8087
http_port 0.0.0.0:8088 intercept options=NO_SSLv3:NO_SSLv2
https_port 0.0.0.0:8089 intercept ssl-bump options=ALL:NO_SSLv3:NO_SSLv2 connection-auth=off cert=/etc/squid/squidCA.pem
always_direct allow all

# SSL-Bump settings
acl blocked ssl::server_name_regex \.facebook\.(com|net)
acl step1 at_step SslBump1
ssl_bump peek step1
ssl_bump terminate blocked
ssl_bump splice all
sslcrtd_program /usr/lib/squid/ssl_crtd -s /var/lib/ssl_db -M 4MB

# Logging settings
access_log daemon:/var/log/squid/access.log squid
cache_log /var/log/squid/cache.log
logfile_rotate 4
debug_options ALL,1 rotate=4

# Cache settings
cache_mem 0
cache_dir ufs /var/cache/squid 32000 128 256
coredump_dir /var/spool/squid
maximum_object_size 512 MB
minimum_object_size 2 KB
cache_replacement_policy heap LFUDA
reload_into_ims on
cache_effective_user proxy
cache_effective_group proxy
cache_swap_low 90
cache_swap_high 95

# Cache: all
refresh_pattern . 518400 80% 518400 override-expire override-lastmod reload-into-ims ignore-no-cache ignore-private ignore-auth ignore-no-store  refresh-ims

# Other settings
pinger_enable off
coredump_dir /var/spool/squid
shutdown_lifetime 2 seconds
via off
forwarded_for off
follow_x_forwarded_for deny all
request_header_access From deny all
request_header_access Server deny all
request_header_access Link deny all
request_header_access X-Forwarded-For deny all
request_header_access Via deny all
request_header_access Cache-Control deny all


# iptables -t nat -A PREROUTING -i wlan0 -p tcp -m multiport --dport 443,465,993,5223 -j REDIRECT --to-ports 8089
# iptables -t nat -A PREROUTING -i wlan0 -p tcp -m multiport --dport 80,81,8000,8080 -j REDIRECT --to-ports 8088
Все мы где-то, когда-то и в чем-то были новичками.

M1chA

Так я по обновленной инструкции и делал

Сейчас заменил в конфиге строчку acl blocked ssl::server_name  "/etc/squid/block" на acl blocked ssl::server_name_regex \.facebook\.(com|net) - все равно не работает.


Сейчас мысль посиетила.....
server_name так и надо оставиить, или изменить надо на имя сервера?

Malaheenee

Цитата: M1chA от 16 декабря 2015, 14:28:13server_name так и надо оставиить, или изменить надо на имя сервера?
Это правило блокировки.

Cообщение объединено 16 декабря 2015, 14:47:12

dns-nameserver исправьте (в статье рекомендуют).
Все мы где-то, когда-то и в чем-то были новичками.

M1chA

#4
Не, не работает

Тестирование проходит на виртуалках.
1-я виртуалка: Сервер - Debian 8.2 x64 gate
Настройки виртуальных сетевушек:
eth0 (wan) ip-10.163.4.97/255.255.255.0; gate-10.163.4.254; dns-10.163.0.1

eth1 (lan): ip-192.168.0.1/255.255.255.0
isc-dhcp-server раздает в eth1

2-я виртуалка: Клиент - Windows XP x86

M1chA

Народ! Ну помогите же пожалуйста!!!!!

Malaheenee

Вы попробуйте с нашим конфигом, а дальше видно будет. Пожалуйста.
Все мы где-то, когда-то и в чем-то были новичками.

M1chA

#7
Чего-то где-то я намудрил....

Вот Ваш конфиг подправленый под меня

# Allowed networks
# eth0
acl localhost src 192.168.0.1
# wlan0
acl localhost src 192.168.88.246

# Allowed ports
acl ssl-ports port 443          # https
acl ssl-ports port 465          # smtp
acl ssl-ports port 993          # imap
acl ssl-ports port 5223         # jabber
acl safe-ports port 80          # http
acl safe-ports port 81          # http
acl safe-ports port 8000        # http
acl safe-ports port 8080        # http
acl safe-ports port 21          # ftp
acl safe-ports port 443         # https
acl safe-ports port 465         # smtp
acl safe-ports port 993         # imap
acl safe-ports port 5223        # jabber
acl CONNECT method CONNECT

# Access settings
http_access deny !safe-ports
http_access deny CONNECT !ssl-ports
http_access allow localhost manager
http_access deny manager
http_access allow localhost
http_access deny all

# Transparent proxy
# непрозрачный порт
http_port 192.168.0.1:3130

# прозрачный http порт
http_port 192.168.0.1:3128 intercept options=NO_SSLv3:NO_SSLv2

#
https_port 192.168.0.1:3129 intercept ssl-bump options=ALL:NO_SSLv3:NO_SSLv2 connection-auth=off cert=/etc/squid/squidCA.pem
always_direct allow all

# SSL-Bump settings
acl blocked ssl::server_name_regex \.facebook\.(com|net)
acl step1 at_step SslBump1
ssl_bump peek step1
ssl_bump terminate blocked
ssl_bump splice all
sslcrtd_program /usr/lib/squid/ssl_crtd -s /var/lib/ssl_db -M 4MB

# Logging settings
access_log daemon:/var/log/squid/access.log squid
cache_log /var/log/squid/cache.log
logfile_rotate 4
debug_options ALL,1 rotate=4

# Cache settings
cache_mem 0
cache_dir ufs /var/cache/squid 32000 128 256
coredump_dir /var/spool/squid
maximum_object_size 512 MB
minimum_object_size 2 KB
cache_replacement_policy heap LFUDA
reload_into_ims on
cache_effective_user proxy
cache_effective_group proxy
cache_swap_low 90
cache_swap_high 95

# Cache: all
refresh_pattern . 518400 80% 518400 override-expire override-lastmod reload-into-ims ignore-no-cache ignore-private ignore-auth ignore-no-store  refresh-ims

# Other settings
pinger_enable off
coredump_dir /var/spool/squid
shutdown_lifetime 2 seconds
via off
forwarded_for off
follow_x_forwarded_for deny all
request_header_access From deny all
request_header_access Server deny all
request_header_access Link deny all
request_header_access X-Forwarded-For deny all
request_header_access Via deny all
request_header_access Cache-Control deny all



Если открываю https://mail.ru то ошибка вот такого плана

ERROR
The requested URL could not be retrieved

--------------------------------------------------------------------------------

The following error was encountered while trying to retrieve the URL: https://94.100.180.202/*

Access Denied.

Access control configuration prevents your request from being allowed at this time. Please contact your service provider if you feel this is incorrect.

Your cache administrator is webmaster.
--------------------------------------------------------------------------------

Generated Wed, 23 Dec 2015 18:43:27 GMT by srv01-gw (squid/3.5.8)


Если открываю http://mail.ru то вот такая ошибка

ОШИБКА
Запрошенный URL не может быть получен

--------------------------------------------------------------------------------

При получении URL http://mail.ru/ произошла следующая ошибка

Доступ запрещён.

Система контроля доступа не позволяет выполнить ваш запрос сейчас. Обратитесь к вашему администратору.

Администратор Вашего кэша: webmaster.
--------------------------------------------------------------------------------

Создано Wed, 23 Dec 2015 18:47:20 GMT на srv01-gw (squid/3.5.8)


Конфиг IPTABLES

# Generated by iptables-save v1.4.21 on Tue Dec 15 17:15:34 2015
*nat
:PREROUTING ACCEPT [130:17791]
:INPUT ACCEPT [203:21134]
:OUTPUT ACCEPT [86:5172]
:POSTROUTING ACCEPT [0:0]
-A PREROUTING -s 192.168.0.0/24 -p tcp -m tcp --dport 443 -j REDIRECT --to-ports 3129
-A PREROUTING -s 192.168.0.0/24 -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 3128
-A POSTROUTING -o eth0 -j MASQUERADE
COMMIT
# Completed on Tue Dec 15 17:15:34 2015


P.S все сайты не открываются

Malaheenee

Окей. wlan0 - это внутрення есть, eth0 - от провайдера. У Вас перепутаны. Т.е. должно быть:
# eth0
acl localhost src 10.163.4.97 # (Можно в принципе даже убрать)
# eth1
acl localhost src 192.168.0.0/24

Можно замудрить с указанием разных acl, но нам так было удобнее.
Далее, указание "192.168.0.1:3129" хоть и безопасно, но у нас так и не заработало, поэтому лучше поправьте.
Все мы где-то, когда-то и в чем-то были новичками.

Vlad

#9
Всех приветствую! Тоже делал по той инструкции. Всё работает, но есть одна серьёзная проблема. Squid блокирует (ошибка 403) соединение, если обращаться по ipv6 адресу. Отключаю ipv6, всё нормально. При этом, в не прозрачном режиме всё в порядке и с ipv6. Сам ipv6 работает. Конфиг squid'а:
Открыть содержимое (спойлер)
acl localnet src 192.168.0.0/16
acl localnet src fc00::/7
acl localnet src fe80::/10
acl ftp proto FTP
acl SSL_ports port 443
acl Safe_ports port 80
acl Safe_ports port 21
acl Safe_ports port 443
acl Safe_ports port 70
acl Safe_ports port 210
acl Safe_ports port 1025-65535
acl Safe_ports port 280
acl Safe_ports port 488
acl Safe_ports port 591
acl Safe_ports port 777
acl CONNECT method CONNECT
acl direct_ipv4_list url_regex -i "/etc/squid/direct_ipv4_list"
dns_nameservers 127.0.0.1
via off
forwarded_for off
follow_x_forwarded_for deny all
request_header_access cache-control deny all
request_header_access referer deny direct_ipv4_list
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access allow localhost manager
http_access deny manager
http_access allow localnet
http_access allow localhost
http_access allow direct_ipv4_list
http_access deny all
http_port 3128
http_port 3129 intercept
https_port 3130 intercept ssl-bump connection-auth=off options=ALL cert=/etc/squid/squidCA.pem
sslproxy_flags DONT_VERIFY_PEER
sslproxy_cert_error allow all
acl step1 at_step SslBump1
ssl_bump peek step1
ssl_bump splice all
coredump_dir /var/spool/squid
refresh_pattern ^ftp:           1440    20%     10080
refresh_pattern ^gopher:        1440    0%      1440
refresh_pattern -i (/cgi-bin/|\?) 0     0%      0
refresh_pattern .               0       20%     4320
dns_v4_first on
cache_mem 1024 MB
maximum_object_size_in_memory 512 KB
cache_dir ufs /var/spool/squid 2048 16 256
maximum_object_size 4 MB
access_log daemon:/var/log/squid/access.log squid
logfile_rotate 10
error_directory /usr/share/squid/errors/ru
cache_peer 127.0.0.1 parent 8118 7 no-query default
always_direct allow ftp
always_direct deny direct_ipv4_list
always_direct deny all
never_direct allow all
cache_effective_user proxy
cache_effective_group proxy
[свернуть]
Правила ip6tables:
Открыть содержимое (спойлер)
IP6TABLES="/sbin/ip6tables"
LAN="br0"
$IP6TABLES -F
$IP6TABLES -X
$IP6TABLES -t nat -F
$IP6TABLES -t nat -X
$IP6TABLES -t mangle -F
$IP6TABLES -t mangle -X
$IP6TABLES -P INPUT DROP
$IP6TABLES -P FORWARD DROP
$IP6TABLES -P OUTPUT ACCEPT
$IP6TABLES -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
$IP6TABLES -A INPUT -p tcp -m conntrack --ctstate INVALID -j REJECT --reject-with tcp-reset
$IP6TABLES -A INPUT -i lo -j ACCEPT
$IP6TABLES -A INPUT -i $LAN -j ACCEPT
$IP6TABLES -A INPUT -p udp --dport 546 -s $LAN_IP6 -j ACCEPT
$IP6TABLES -A INPUT -p icmpv6 -j ACCEPT
$IP6TABLES -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
$IP6TABLES -A FORWARD -p tcp -m conntrack --ctstate INVALID -j REJECT --reject-with tcp-reset
$IP6TABLES -A FORWARD -i $LAN -j ACCEPT
$IP6TABLES -A FORWARD -p icmpv6 -j ACCEPT
$IP6TABLES -t nat -A PREROUTING -i $LAN -p tcp --dport $HTTP -j REDIRECT --to-port 3129
$IP6TABLES -t nat -A PREROUTING -i $LAN -p tcp --dport $HTTPS -j REDIRECT --to-port 3130
[свернуть]

ihammers

Цитата: Vlad от 03 января 2016, 18:36:01Конфиг squid'а:
А где ipv6 сети, если про запись начинающие с F, то это разве не локальные адреса? Не увидел ACL с префиксом: /64 или /48.
Цитата: http://wiki.squid-cache.org/Features/IPv6#Defining_IPv6_as_2000::.2F3
Defining IPv6 space as containing any address starting with F

    they are local-only ranges.
    Add them to your localnet ACL when actually needed.

Доп. информация: http://www.w2a.ru/blog/linux/802.html
Debian GNU/Linux Bookworm, LXQt/OpenBox: AMD Ryzen 5 5600G / 64Gb RAM
_______________________________
Debian GNU/Linux Bookworm, без графики: AMD Phenon X4 / 16Gb RAM
_______________________________
Debian GNU/Linux Bookworm, LXQt/OpenBox: Acer Aspire One 722 AMD C60 / 8Gb RAM / ATI HD6290

Vlad

Спасибо за подсказку. Подавил acl globalIPv6 src ipv6 и разрешил его http_access allow globalIPv6. По поводу /64 не понял. С /10 работает. Или подскажите по подробнее?

Vlad

Сделал авторизацию для пользователя из интернета. Теперь постоянно (раз в 1-2 сек.) в cache.log появляется строчка:
ЦитироватьNOTICE: Authentication not applicable on intercepted requests.
Смысл её понятен, хотелось бы её убрать, т.к. всё работает как задумано.

Vlad

Приветствую! Такой вопрос, есть два локальных прокси (помимо squid), один из них http-прокси (слушает порт 8118), другой https-прокси (слушает порт 8079). Задача, с помощью squid'а сделать прозрачный прокси и в качестве вышестоящих прокси сделать указанные выше. Знаю что есть директива cache_peer, как там разделить разный трафик, как я понял cache_peer обрабатывается либо по "весу", либо циклически, а нужно чтоб трафик http шёл исключительно к одному прокси (127.0.0.1:8118), а https к другому (127.0.0.2:8079)?

Ben-zin

Цитата: Vlad от 26 апреля 2017, 15:52:31
Сделал авторизацию для пользователя из интернета. Теперь постоянно (раз в 1-2 сек.) в cache.log появляется строчка:
ЦитироватьNOTICE: Authentication not applicable on intercepted requests.
Смысл её понятен, хотелось бы её убрать, т.к. всё работает как задумано.
up.
Проблема решена, или оставлено как есть?