Использование общего файла паролей (htpasswd)

Ответить
ya
^-^
Сообщения: 3025
Зарегистрирован: 16 дек 2021, 19:56

Использование общего файла паролей (htpasswd)

Сообщение ya »

если вы используете auth = "plain[passwd=/etc/ocserv/ocpasswd]" в конфигурации ocserv.

Вам понадобится хелпер basic_ncsa_auth, который обычно идет в комплекте с Squid.

Код: Выделить всё

sudo apt update && sudo apt install squid apache2-utils -y
/etc/squid/squid.conf

Код: Выделить всё

# Путь к хелперу и файлу паролей ocserv
auth_param basic program /usr/lib/squid/basic_ncsa_auth /etc/ocserv/ocpasswd
auth_param basic children 5
auth_param basic realm Proxy Server
auth_param basic credentialsttl 2 hours

# Создание ACL для авторизованных пользователей
acl authenticated proxy_auth REQUIRED

# Разрешение доступа
http_access allow authenticated
http_access deny all
Вариант 2: Использование PAM (Единая системная авторизация)

Код: Выделить всё

sudo gpasswd -a proxy shadow
/etc/squid/squid.conf

Код: Выделить всё

auth_param basic program /usr/lib/squid/basic_pam_auth
auth_param basic children 5
auth_param basic realm Network Access
auth_param basic credentialsttl 2 hours

acl authenticated proxy_auth REQUIRED
http_access allow authenticated
http_access deny all
Важные нюансы
Порты: Убедитесь, что Squid и ocserv не конфликтуют. ocserv обычно занимает 443 (TCP/UDP), Squid по умолчанию — 3128.

Шифрование: По умолчанию Basic Auth в Squid передает логин/пароль в открытом виде (base64). Если вы хотите безопасности уровня ocserv, вам нужно настроить HTTPS-прокси (Squid с поддержкой SSL) или использовать SSH-туннель.

Формат паролей: ocserv использует специфический формат в файле ocpasswd. Если Squid отказывается принимать их напрямую через basic_ncsa_auth, лучше всего переключить оба сервиса на RADIUS или LDAP для полноценного Single Sign-On.

Проверка конфигурации
После внесения изменений проверьте конфиг и перезапустите службу:

Код: Выделить всё

sudo squid -k parse
sudo systemctl restart squid
ya
^-^
Сообщения: 3025
Зарегистрирован: 16 дек 2021, 19:56

Re: Использование общего файла паролей (htpasswd)

Сообщение ya »

парсер паролей

Код: Выделить всё

cat /etc/ocserv/passwd | awk -F: '{print $1 ":" $3}' > /etc/squid/squid_passwd

Код: Выделить всё

chown proxy:proxy /tmp/squid_passwd
Генерация самоподписанного сертификата (пример)

Код: Выделить всё

openssl req -new -newkey rsa:2048 -days 365 -nodes -x509 \
    -keyout /etc/squid/squid.key \
    -out /etc/squid/squid.crt
grep -v "#" /etc/squid/squid.conf

Код: Выделить всё

visible_hostname localhost

http_port 3128 transparent
http_port 3129 cert=/etc/squid/squid.crt key=/etc/squid/squid.key
sslproxy_options NO_SSLv3,SINGLE_DH_USE

icp_port 3130

pid_filename /var/run/squid/squid.pid

check_hostnames off
dns_timeout 1 seconds
memory_pools on
memory_pools_limit 700 MB




cache_access_log /var/log/squid/access.log

cache_replacement_policy lru
cache_mem 256 MB
maximum_object_size 10240 KB
cache_swap_low 95
cache_swap_high 99

range_offset_limit 1024 KB
ipcache_size 8192
cache_store_log none
half_closed_clients off

maximum_object_size 300 MB
maximum_object_size_in_memory 300 MB
minimum_object_size 1 KB
ssl_bump server-first all
cache_dir ufs /var/spool/squid 4096 16 256

pipeline_prefetch on

ftp_user anonymous@
ftp_passive on
ftp_sanitycheck on

acl manager proto cache_object
acl localhost1 src localhost
acl all1 dst all

acl limit maxconn 50

acl limit_unlim maxconn 50

refresh_pattern -i \.pdf$  43200 100% 43200 override-lastmod override-expire
refresh_pattern -i \.zip$  43200 100% 43200 override-lastmod override-expire
refresh_pattern -i \.tar$  43200 100% 43200 override-lastmod override-expire
refresh_pattern -i \.gz$   43200 100% 43200 override-lastmod override-expire
refresh_pattern -i \.tgz$  43200 100% 43200 override-lastmod override-expire
refresh_pattern -i \.exe$  43200 100% 43200 override-lastmod override-expire
refresh_pattern -i \.prz$  43200 100% 43200 override-lastmod override-expire
refresh_pattern -i \.ppt$  43200 100% 43200 override-lastmod override-expire
refresh_pattern -i \.inf$  43200 100% 43200 override-lastmod override-expire
refresh_pattern -i \.mid$  43200 100% 43200 override-lastmod override-expire
refresh_pattern -i \.wav$  43200 100% 43200 override-lastmod override-expire
refresh_pattern -i \.mp3$  43200 100% 43200 override-lastmod override-expire
refresh_pattern -i \.mp4$  43200 100% 43200 override-lastmod override-expire
refresh_pattern -i \.flv$  43200 100% 43200 override-lastmod override-expire
refresh_pattern -i \.avi$  43200 100% 43200 override-lastmod override-expire
refresh_pattern -i \.mpg$  43200 100% 43200 override-lastmod override-expire
refresh_pattern -i \.mpeg$  43200 100% 43200 override-lastmod override-expire
refresh_pattern -i static\.pornolab\.net 43200   100%    43200 override-lastmod override-expire ignore-reload ignore-no-cache

refresh_pattern http://static\.                    43200   100%    43200 override-lastmod override-expire ignore-reload ignore-no-cache ignore-reload ignore-private ignore-auth
refresh_pattern http://ad\.                        43200   100%    43200 override-lastmod override-expire ignore-reload ignore-no-cache
refresh_pattern http://ads\.                       43200   100%    43200 override-lastmod override-expire ignore-reload ignore-no-cache
refresh_pattern http://adv\.                       43200   100%    43200 override-lastmod override-expire ignore-reload ignore-no-cache
refresh_pattern http://click\.                     43200   100%    43200 override-lastmod override-expire ignore-reload ignore-no-cache
refresh_pattern http://count\.                     43200   100%    43200 override-lastmod override-expire ignore-reload ignore-no-cache
refresh_pattern http://counter\.                   43200   100%    43200 override-lastmod override-expire ignore-reload ignore-no-cache
refresh_pattern http://engine\.                    43200   100%    43200 override-lastmod override-expire ignore-reload ignore-no-cache
refresh_pattern http://img\.readme\.ru             43200   100%    43200 override-lastmod override-expire ignore-reload ignore-no-cache
refresh_pattern http://userpic\.livejournal\.com   43200   100%    43200 override-lastmod override-expire ignore-reload ignore-no-cache
refresh_pattern \.ru/bf-analyze                    43200   100%    43200 override-lastmod override-expire ignore-reload ignore-no-cache
refresh_pattern \.ru/bf-si                         43200   100%    43200 override-lastmod override-expire ignore-reload ignore-no-cache
refresh_pattern /advs/                             43200   100%    43200 override-lastmod override-expire ignore-reload ignore-no-cache
refresh_pattern /banners/                          43200   100%    43200 override-lastmod override-expire ignore-reload ignore-no-cache
refresh_pattern /cgi-bin/iframe/                   43200   100%    43200 override-lastmod override-expire ignore-reload ignore-no-cache

cache_peer 192.168.43.13 parent 3129 0 no-query no-digest no-netdb-exchange round-robin weight=5

always_direct deny all1
never_direct allow all1

forwarded_for off

request_header_access Via deny all1
request_header_access X-Forwarded-For deny all1

acl adv url_regex -i "/etc/squid/adv.rules"

auth_param basic program /usr/lib/squid/basic_ncsa_auth /tmp/squid_passwd
auth_param basic children 5
auth_param basic realm Proxy Server
auth_param basic credentialsttl 2 hours

acl authenticated proxy_auth REQUIRED

http_access deny adv

http_access allow !adv authenticated
http_access deny all1

grep -v "#" /etc/squid/adv.rules

Код: Выделить всё

^.*gif$
^.*GIF$
^.*88x31.*gif.*$
^.*88x31.*GIF.*$
^.*100x80.*gif.*$
^.*100x80.*GIF.*$
^.*100x100.*gif.*$
^.*100x100.*GIF.*$
^.*120x60.*gif.*$
^.*120x60.*GIF.*$
^.*240x120.*gif.*$
^.*240x120.*GIF.*$
^.*179x69.*gif.*$
^.*193x72.*gif.*$
^.*468x60.*gif.*$
^.*300x300.*jpg.*$
^.*300x300.*jpeg.*$
^.*advert_437.*$
^.*teaserLink-437.*$
^.*google-analytics.com.*$
^.*cdn.syndication.twimg.com.*$
^.*safebrowsing.google.com.*$
^.*200x200.*jpg.*$
^.*doubleclick.*$
^.*2bffd64abeefce6a3270953411b24368.*jpg.*$
^.*44281aa82e5ab6862d4f0a983279cd93.*jpg.*$
^.*648add87bf6741e92827a491bbb8dd03.*jpg.*$
^.*900tflirt.*jpg.*$
^.*promo.*$
^.*ads\.js$
^.*watch\.js$
^.*wsp.traffic-media.co.*$
^.*jsc.traffic-media.co.*$
^.*imgg-cdn.tovarro.com.*$
^.*imggprx.marketgid.com.*$
^.*servicer.traffic-media.co.*$
^.*www.trafic-media.ru.*$
^.*cdn-rtb.sape.ru.*$
^.*primechoice.ru.*$
^.*adbetnet.advertserve.com.*$
^.*static.pornolab.net/004/toy69/2019/1\.gif.*$
^.*static.pornolab.net/004/toy69/2019/2\.gif.*$
^.*static.pornolab.net/004/toy69/2019/3\.gif.*$
^.*static.pornolab.net/004/toy69/2019/4\.gif.*$
^.*static.pornolab.net/004/toy69/2019/5\.gif.*$
^.*static.pornolab.net/004/toy69/1404/1\.gif.*$
^.*static.pornolab.net/004/toy69/1404/2\.gif.*$
^.*static.pornolab.net/004/toy69/1404/3\.gif.*$
^.*static.pornolab.net/004/toy69/1404/4\.gif.*$
^.*static.pornolab.net/004/toy69/1404/5\.gif.*$
^.*update.googleapis.com.*$
^.*dynamic\_banner.*$
^.*promo-bc.com.*$
^.*ads.js.*$
^.*c2b7048b3a52895a35e0b59a82e67295\.*png.*$
^.*44d5d6ed9a2ebadd60e086373e307fc4\.*png.*$
^.*a87093daf08ae9acf6f1c0a3f39344b0\.*png.*$
^.*2b7a69b120528c9484782b7e153a6b29\.*png.*$
^.*3151a47bace666b0ad1ad14630e6a139\.*jpg.*$
^.*integrator\.*js.*$
^.*adservice.google.ru/adsid/integrator\.js\?domain.*$
^.*adservice.google.ru.*$
^.*adblockotsosal.ru.*$
^.*imgdrive.net/frame.php.*$
ya
^-^
Сообщения: 3025
Зарегистрирован: 16 дек 2021, 19:56

Re: Использование общего файла паролей (htpasswd)

Сообщение ya »

Код: Выделить всё

apt install squid-openssl
Создание сертификатов для HTTPS-прокси

Код: Выделить всё

openssl req -new -newkey rsa:2048 -days 365 -nodes -x509 -keyout /etc/squid/ssl_cert/myCA.pem -out /etc/squid/ssl_cert/myCA.pem
/etc/squid/squid.conf

Код: Выделить всё

# Порт с поддержкой SSL Bump
http_port 3128 ssl-bump \
  cert=/etc/squid/ssl_cert/myca.pem \
  generate-host-certificates=on dynamic_cert_mem_cache_size=4MB

# Путь к помощнику по созданию сертификатов
sslcrtd_program /usr/lib/squid/security_file_certgen -s /var/lib/squid/ssl_db -M 4MB

# Определение правил SSL Bump
acl step1 at_step SslBump1
ssl_bump peek step1
ssl_bump bump all

Код: Выделить всё

# Включение SSL-bump
http_port 3128 ssl-bump cert=/etc/squid/ssl_cert/myCA.pem key=/etc/squid/ssl_cert/myCA.pem

# Настройка ssl_bump
ssl_bump server-first all

# Разрешение доступа
acl step1 at_step SslBump1
ssl_bump bump all
Также нужно указать, что Squid будет использовать сертификаты для HTTPS:

Код: Выделить всё

sslcrtd_program /usr/lib/squid/security/ssl_crtd -s /var/spool/squid_ssldb -M 4MB
sslcrtd_children 8 startup=1 idle=1
И создать базу данных сертификатов

Код: Выделить всё

sudo squid -z
Перезапуск Squid

Код: Выделить всё

sudo systemctl restart squid
Ответить