使用 SSH 通过 Squid 与 SSL 碰撞连接到 Git
Posted
技术标签:
【中文标题】使用 SSH 通过 Squid 与 SSL 碰撞连接到 Git【英文标题】:Connect to Git using SSH through Squid with SSL bump 【发布时间】:2021-08-10 12:20:58 【问题描述】:我的目标是设置 squid 代理以仅允许访问某些 git 存储库(路径)
我将 Squid 配置为使用 SSL Bump 跟踪并允许基于路径的一些 URL,我需要允许通过 SSH 进行 git clone,我的 squid 配置如下
http_access allow all
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 whitelist url_regex "/etc/squid/whitelist.txt"
acl SSL_ports port 443
acl SSL_ports port 22
acl Safe_ports port 80 # http
acl Safe_ports port 21 # ftp
acl Safe_ports port 22 # ssh
acl Safe_ports port 443 # https
acl ssh_port port 22 # ssh
http_access allow ssh_port
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 all src 0.0.0.0/0
http_access allow all
http_access allow ssh_port
http_access deny CONNECT !SSL_ports
http_access deny all
http_port 3128 ssl-bump generate-host-certificates=on dynamic_cert_mem_cache_size=4MB cert=/etc/squid/ssl_cert/myCA.pem options=NO_SSLv2
sslcrtd_program /usr/local/squid/libexec/security_file_certgen -s /var/lib/ssl_db -M 4MB
always_direct allow all
acl step1 at_step SslBump1
ssl_bump peek step1
ssl_bump bump all
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
sslproxy_cert_error allow all
sslproxy_flags DONT_VERIFY_PEER
strip_query_terms off
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
在 Windows 上,我使用以下 openssh 客户端配置设置 mingw
Host github.com
ServerAliveInterval 60
IdentitiesOnly yes
ProxyCommand /usr/bin/corkscrew 192.10.2.84 3128 %h %p ~/.ssh/id_rsa
IdentityFile ~/.ssh/id_rsa
User github
ForwardAgent yes
我假设 ~/.ssh/id_rsa 是 github ssh 密钥? 这个配置是对还是错?我不想将代理的 ssh 密钥放在客户端配置中
这是我的 git ssh 的输出
ssh git@github.com -Tvvv
OpenSSH_8.5p1, OpenSSL 1.1.1f 31 Mar 2020
debug1: Reading configuration data /home/developer/.ssh/config
debug1: /home/developer/.ssh/config line 1: Applying options for github.com
debug3: expanded UserKnownHostsFile '~/.ssh/known_hosts' -> '/home/developer/.ssh/known_hosts'
debug3: expanded UserKnownHostsFile '~/.ssh/known_hosts2' -> '/home/developer/.ssh/known_hosts2'
debug1: Executing proxy command: exec /usr/bin/corkscrew 172.16.2.84 3128 github.com 22 ~/.ssh/id_rsa
debug1: identity file /home/developer/.ssh/id_rsa type 0
debug1: identity file /home/developer/.ssh/id_rsa-cert type -1
debug1: Local version string SSH-2.0-OpenSSH_8.5
kex_exchange_identification: Connection closed by remote host
Connection closed by UNKNOWN port 65535
【问题讨论】:
这个编程有什么关系?这是系统管理。 这是 git 相关的 当然,但并不是所有与 git 相关的东西都是编程。托管您自己的 git 服务器也不是主题,这看起来您正在对代理进行故障排除,而不是专门针对 git 的任何事情。而且我告诉你这不仅仅是为了强制执行一些任意规则:老实说,我认为你在 SE 网络中的其他网站上获得答案的机会更大。 我不知道是github的限制还是我错误配置了(代理/客户端),你会怎么做,我全神贯注?我真的卡住了 我强烈建议您不要尝试实现此过滤。损坏的代理(HTTP 代理、防病毒和防火墙软件、TLS 中间盒等)是 Git 的一个大问题,因为 Git 严重依赖 HTTPS 和 SSH 的标准功能,而代理会破坏该功能。您可能会破坏功能并降低安全性。不要这样做。 【参考方案1】:将此行添加到配置中:
acl SSL_ports port 22
【讨论】:
以上是关于使用 SSH 通过 Squid 与 SSL 碰撞连接到 Git的主要内容,如果未能解决你的问题,请参考以下文章