Rocky Linux 8.9 и прокси Squid

[root@rocky8 ~]# yum update

[root@rocky8 ~]# yum install squid -y

[root@rocky8 ~]# systemctl enable --now squid 

[root@rocky8 ~]# systemctl status squid
● squid.service - Squid caching proxy
   Loaded: loaded (/usr/lib/systemd/system/squid.service; enabled; vendor preset: disabled)
   Active: active (running) since Mon 2023-02-05 22:36:38 EET; 21s ago
     Docs: man:squid(8)
  Process: 9004 ExecStartPre=/usr/libexec/squid/cache_swap.sh (code=exited, status=0/SUCCESS)
 Main PID: 9009 (squid)
    Tasks: 3 (limit: 7844)
   Memory: 14.2M
   CGroup: /system.slice/squid.service
           ├─9009 /usr/sbin/squid --foreground -f /etc/squid/squid.conf
           ├─9012 (squid-1) --kid squid-1 --foreground -f /etc/squid/squid.conf
           └─9013 (logfile-daemon) /var/log/squid/access.log

лют 05 22:36:38 rocky8 systemd[1]: Starting Squid caching proxy...
лют 05 22:36:38 rocky8 squid[9009]: Squid Parent: will start 1 kids
лют 05 22:36:38 rocky8 squid[9009]: Squid Parent: (squid-1) process 9012 started
лют 05 22:36:38 rocky8 systemd[1]: Started Squid caching proxy.


[root@rocky8 ~]# firewall-cmd --permanent --add-service=squid
success
[root@rocky8 ~]# firewall-cmd --reload
success
[root@rocky8 ~]# firewall-cmd --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: enp1s0
  sources: 
  services: squid ssh
  ports: 
  protocols: 
  forward: no
  masquerade: no
  forward-ports: 
  source-ports: 
  icmp-blocks: 
  rich rules: 

Добавим в дефолтный конфиг две строчки: 

acl domain_blacklist dstdomain "/etc/squid/domain_blacklist.txt"

Как в любом ACL важно следить за верным порядком правил, чтобы достичь нужного результата, например, если блокируем какое-то количество доменов, чтобы запрещающее правило было выше разрешающего:

http_access deny all domain_blacklist

[root@rocky8 ~]# cat /etc/squid/squid.conf | grep "^[^#]"
acl localnet src 0.0.0.1-0.255.255.255 # RFC 1122 "this" network (LAN)
acl localnet src 10.0.0.0/8 # RFC 1918 local private network (LAN)
acl localnet src 100.64.0.0/10 # RFC 6598 shared address space (CGN)
acl localnet src 169.254.0.0/16 # RFC 3927 link-local (directly plugged) machines
acl localnet src 172.16.0.0/12 # RFC 1918 local private network (LAN)
acl localnet src 192.168.0.0/16 # RFC 1918 local private network (LAN)
acl localnet src fc00::/7        # RFC 4193 local private network range
acl localnet src fe80::/10      # RFC 4291 link-local (directly plugged) machines
acl domain_blacklist dstdomain "/etc/squid/domain_blacklist.txt"
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 all domain_blacklist
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 deny all
http_port 3128
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

Создадим файл со списком запрещенных доменов, пример для блокировки домена и его поддоменов:

[root@rocky8 ~]# vi /etc/squid/domain_blacklist.txt

.facebook.com

Перезапуск для перечитывания конфига
[root@rocky8 ~]# systemctl restart squid && systemctl  status squid


Так же можно шейпить скорость:
[root@rocky8 ~]# vi /etc/squid/squid.conf 

acl speed_limit_128k src 192.168.0.0/24
delay_pools 1
delay_class 1 3
delay_access 1 allow speed_limit_128k
delay_access 1 deny all
delay_parameters 1 64000/64000 -1/-1 16000/64000



acl speed_limit_128k src 192.168.0.0/24 - определяет список управления доступом (ACL) с именем speed_limit_128k, разрешает трафик из следующего диапазона IP-адресов: 192.168.0.0/24, целью этого ACL является идентификация клиентов, на которых будут распространяться правила.

delay_pools 1 - строка указывает количество пулов задержки, используются для формирования трафика и управления полосой пропускания. 

delay_class 1 3 - определяет класс задержки, 1 относится к номеру пула задержки (который соответствует единственному пулу задержек, который мы определили ранее),  цифра 3 представляет идентификатор класса для этого пула, разные классы могут иметь разные параметры задержки.

delay_access 1 allow speed_limit_128k -  указывается управление доступом для пула задержек, позволяет клиентам из ACL speed_limit_128k использовать этот пул задержек, по сути, клиенты, соответствующие указанному ACL, будут подчиняться параметрам задержки, определенным позже.

delay_access 1 deny all - запрещает доступ к пулу задержек всем остальным клиентам,
если клиент не соответствует speed_limit_128k ACL, он не сможет использовать этот пул.

delay_parameters 1 64000/64000 -1/-1 16000/64000 - задает параметры задержки для класса задержки, формат: 
delay_parameters / <class> <initial-bucket><max-bucket> <min-rate>/<max-rate>

В нашем случае:
<class>: Идентификатор класса 1.
<initial-bucket>: 64 000 байт (начальный размер сегмента).
<max-bucket>: 64 000 байт (максимальный размер сегмента).
<min-rate>: -1 (без ограничения минимальной скорости).
<max-rate>: 16 000 байт в секунду (ограничение максимальной скорости).




Комментарии