squid proxy https

 ( makgab | 2017. április 14., péntek - 20:00 )

Üdv!
LXC alatt tesztelgetem a squid-et (centos7).
lxc centos7, ip: 192.168.122.205/24

A lynx telepítve, hogy teszteljem. Működik is, csak a https-t nem tudom tiltani. Mit felejtek el?

A squid lxc centos-on:
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3128
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 443 -j REDIRECT --to-port 3128


# /etc/squid/squid.conf

http_port 3128
cache_dir ufs /var/spool/squid 100 16 256
coredump_dir /var/spool/squid
#
# Add any of your own refresh_pattern entries above these.
#
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
# error directory
error_directory /usr/share/squid/errors/hu

# ACLs definitions: ====================================================
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

acl local src 127.0.0.1
acl lan src 192.168.122.205
acl secure proto https

# ACCESS definitions: ==================================================
#http_access deny secure
#http_access deny SSL_ports
#http_access deny all

http_access allow local
http_access allow lan

# And finally deny all other access to this proxy
http_access deny all
# --- squid.conf ---

Ha csak a "http_access deny all" részt hagyom bent a http_access-nél, akkor is megy a https. De a http-t szépen tiltja. Mi bénázok el?

Hozzászólás megjelenítési lehetőségek

A választott hozzászólás megjelenítési mód a „Beállítás” gombbal rögzíthető.

Ha tiltani akarod, akkor miért irányítod át, aztán tiltod ahelyett, hogy tűzfalban tiltanád?

Ha mindenképp így kell, 443-at 3129-re tenném.

Csak tesztelem jelenleg.
Most próbálom újból:
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3128
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 443 -j REDIRECT --to-port 3129

(openssl req -new -newkey rsa:2048 -sha256 -days 365 -nodes -x509 -extensions v3_ca -keyout myCA.pem -out myCA.pem)

# squid.conf
https_port 3129 cert=/etc/squid/myCA.pem

lynx-nek:
export http_proxy=http://192.168.122.205:3128
export https_proxy=https://192.168.122.205:3129

Most a http://google.com elérhető (lynx-ben) a https-ben hiba:
protocol (71) error: SQUID_X509_V_ERR_DOMAIN_MISMATCH
vagy
(101) Network is unreachable

:o
A https hogyan engedélyezhető? Nem egészen értem.
Hogyan lehet ugyanarra a portra (pl. 3128) beállítani a http-t és a https-t?

a https nálad nem tunnel-ben megy.?
--
God bless you, Captain Hindsight..

A redirect szerint transzparens proxy-t próbálsz összerakni, ami SSL/TLS-sel együtt... problémás (ugyebár itt gyakorlatilag csinálsz egy MITM támadást - http://wiki.squid-cache.org/Features/SslBump).

Első körben dobd ki azt a két szabályt az iptables-ből és próbáld ki, hogy úgy működik-e, ha simán beállítod a böngészőben a proxy-t (nem transzparensként). Aztán gondold végig, hogy biztosan kell-e neked a transzparens proxy vagy elég, ha simán a proxydon keresztül megy-e a forgalom (HTTP simán, HTTPS meg CONNECT-en keresztül) úgy, hogy a kliens tud erről.

BlackY
--
"en is amikor bejovok dolgozni, nem egy pc-t [..] kapcsolok be, hanem a mainframe-et..." (sj)

>MITM támadást

már megint olyan szavakat használsz amiket nem ismersz

A squid oldalon láttam a megoldást, egyszerű.


acl whitelist dstdomain .whitelist.com .goodsite.com .partnerssite.com
acl http proto http
acl port_80 port 80
acl port_443 port 443
acl CONNECT method CONNECT
acl authenticated_users proxy_auth REQUIRED
# authenticate_program /usr/lib64/squid/basic_ncsa_auth

# rules allowing non-authenticated users
http_access allow http port_80 whitelist
http_access allow CONNECT port_443 whitelist

# rules allowing authenticated users
http_access allow http port_80 authenticated_users
http_access allow CONNECT port_443 authenticated_users

# catch-all rule
http_access deny all

A http/https ugyanazon porton lehet.
Működik. Kösz az infókat!

Elnézést, hogy nem válaszoltam időben és a PÜ-re sem..
Örülök, hogy a végén sikerült.

Nem csak 1 járható út van :)

Bocsánat, hogy felhozom a témát, de nálam is aktuális lett a dolog.

Pár éve már volt dolgom egy rövid ideig squiddal, de csak http.
Most viszont felmerült a https.

Kérdéseim:
Ha csak TLS SNI-t akarok logolni. (domain szinten szűrni, url szinten nem)

Debian 9.7 alatt újra kell fordítani a squid-et, vagy SNI-t támogatja a debian-os verzió is?

Kell-e saját CERT-et beállítani a klienseken? (Windows 7-10 pc, android telo.)
(gondolom nem, hiszen elvileg az ssl nem bomlik, vagy igen?)