それマグで!

知識はカップより、マグでゆっくり頂きます。 takuya_1stのブログ

習慣に早くから配慮した者は、 おそらく人生の実りも大きい。

HTTPプロキシ経由でのSSH(その2) connect を使う

インストール

#ubuntu
aptitude install connect-proxy
#centos
yum install connect 
#cygwin
apt-cyg install connect-proxy

connectは

connect-proxy はその名前の通り、CONNETでプロキシに接続する。

CONNECTって?

CONNECTは、主にHTTPS(443)通信のために使う.HTTPSは通信内容が見えないのでプロキシは中継するだけ。むしろ見てはいけない.

connect コマンドはHTTPプロキシに転送要求を出します。

使い方

~/.ssh/config
 23 Host mm
 24   Hostname ssh.example.com
 25   ProxyCommand connect-proxy squid.example.com:3128 %h %p

プロキシにログインが居る場合

環境変数にユーザー名とパスワードを書く.

export HTTP_PROXY_USER=takuya_1st
export HTTP_PROXY_PASS=MY_PASSWORD

corkskrew との違い

あまりない、使う部分においては殆ど同じ.

注意点

squid がサポートする digest 認証はconnectで使えない.通常のhtpasswd は使えた.

digest認証が失敗する様子

connct は -d オプションで通信エラーを見ることが出来ます.

takuya@letsnote:~$ connect -d -H 192.168.22.83:3128   192.168.22.210 22
DEBUG: No direct address are specified.
DEBUG: relay_method = HTTP (3)
DEBUG: relay_host=192.168.22.83
DEBUG: relay_port=3128
DEBUG: relay_user=takuya_1st
DEBUG: local_type=stdio
DEBUG: dest_host=192.168.22.210
DEBUG: dest_port=22
DEBUG: not matched, addr to be relayed: 192.168.22.210
DEBUG: 192.168.22.210 is for not direct.
DEBUG: connecting to 192.168.22.83:3128
DEBUG: begin_http_relay()
DEBUG: >>> "CONNECT 192.168.22.210:22 HTTP/1.0\r\n"
DEBUG: >>> "\r\n"
DEBUG: <<< "HTTP/1.0 407 Proxy Authentication Required\r\n"
DEBUG: <<< "Server: squid/3.0.STABLE19\r\n"
DEBUG: <<< "Mime-Version: 1.0\r\n"
DEBUG: <<< "Date: Fri, 12 Aug 2011 19:01:38 GMT\r\n"
DEBUG: <<< "Content-Type: text/html\r\n"
DEBUG: <<< "Content-Length: 1569\r\n"
DEBUG: <<< "X-Squid-Error: ERR_CACHE_ACCESS_DENIED 0\r\n"
DEBUG: <<< "Proxy-Authenticate: Digest realm="Squid proxy-caching web server", nonce="knhFTiDDxQmbBRkz", qop="auth", stale=false\r\n"
DEBUG: Unsupported authentication type: digestDEBUG: <<< "X-Cache: MISS from localhost\r\n"
DEBUG: <<< "X-Cache-Lookup: NONE from localhost:3128\r\n"
DEBUG: <<< "Proxy-Connection: close\r\n"
DEBUG: <<< "\r\n"
DEBUG: Can't find Proxy-Authenticate: in response header.FATAL: failed to begin relaying via HTTP.

basic に変えたら通った

takuya@letsnote:~$ connect -d -H 192.168.22.83:3128   192.168.22.210 22
DEBUG: No direct address are specified.
DEBUG: relay_method = HTTP (3)
DEBUG: relay_host=192.168.22.83
DEBUG: relay_port=3128
DEBUG: relay_user=takuya_1st
DEBUG: local_type=stdio
DEBUG: dest_host=192.168.22.210
DEBUG: dest_port=22
DEBUG: not matched, addr to be relayed: 192.168.22.210
DEBUG: 192.168.22.210 is for not direct.
DEBUG: connecting to 192.168.22.83:3128
DEBUG: begin_http_relay()
DEBUG: >>> "CONNECT 192.168.22.210:22 HTTP/1.0\r\n"
DEBUG: >>> "\r\n"
DEBUG: <<< "HTTP/1.0 407 Proxy Authentication Required\r\n"
DEBUG: <<< "Server: squid/3.0.STABLE19\r\n"
DEBUG: <<< "Mime-Version: 1.0\r\n"
DEBUG: <<< "Date: Fri, 12 Aug 2011 19:28:33 GMT\r\n"
DEBUG: <<< "Content-Type: text/html\r\n"
DEBUG: <<< "Content-Length: 1569\r\n"
DEBUG: <<< "X-Squid-Error: ERR_CACHE_ACCESS_DENIED 0\r\n"
DEBUG: <<< "Proxy-Authenticate: Digest realm="Squid proxy-caching web server", nonce="4X5FTpDCxQkyyc1n", qop="auth", stale=false\r\n"
DEBUG: Unsupported authentication type: digestDEBUG: <<< "Proxy-Authenticate: Basic realm="Squid proxy-caching web server\xE3\x80\x80"\r\n"
DEBUG: <<< "X-Cache: MISS from localhost\r\n"
DEBUG: <<< "X-Cache-Lookup: NONE from localhost:3128\r\n"
DEBUG: <<< "Proxy-Connection: close\r\n"
DEBUG: <<< "\r\n"
DEBUG: not matched, addr to be relayed: 192.168.22.210
DEBUG: 192.168.22.210 is for not direct.
DEBUG: connecting to 192.168.22.83:3128
DEBUG: begin_http_relay()
DEBUG: >>> "CONNECT 192.168.22.210:22 HTTP/1.0\r\n"
DEBUG: >>> "Proxy-Authorization: Basic xxxxx\r\n"
DEBUG: >>> "\r\n"
DEBUG: <<< "HTTP/1.0 200 Connection established\r\n"
DEBUG: connected, start user session.
DEBUG: <<< "\r\n"
DEBUG: connected
DEBUG: start relaying.
DEBUG: recv 32 bytes
SSH-2.0-OpenSSH_5.5p1 Debian-6

Digestに非対応ってチョッと怖い気もするが.仕方ないね.

プロキシで暗号化通信を観察して良いのか

管理者がプロキシで暗号化通信を見ようとするのは横暴であり、中国共産党と同じかもしれない.

プロキシで見るためにはクライアントにオレオレ証明書を入れてプロキシ側で暗号化通信を展開後,再・暗号化する。これが果たしてやって良いことなのかは激しく疑問.

偽証明書によるSSLというものをはたして、電気通信事業者がやってよいのかという疑問があります。私企業が社内ネットワークの監視目的で導入するのは許されても、電気通信事業者が一般向けのサービスにおいてそれを実施するのは、電気通信事業法違反かどうかわかりませんがスレスレだと思いますし、倫理的に許されないと思います。

高木浩光@自宅の日記 - SoftBankガラケーの致命的な脆弱性がようやく解消

通信事業者が偽SSLとか言語道断だし.私企業でもやって良いことなのかな・・・倫理的にどうなんだろう.「社員の通信は全部見てやる!」って俺が管理者なら怖くてもいえない.流出させちゃ行けない顧客情報なら名前や住所をマスクして仕事させればいいわけで・・・情報倫理の研究部会に参加してみて論文読んでみよう.


au がグローバルIPがたりないからWiMAXプライベートで割当てますと言ったとか.v4-v6ブリッジ飛び越えて,いきなりそんなこと言っちゃうau ならホントやりかねない。怖いねー