SSH セキュアな回線を確保

/ Linux/Unix / Comment[0]
外出先で暗号化されていないフリースポット、またはハニポ臭いAPなどから止む追えなく自宅にアクセスするようなシチュはないだろうか。
無暗号だったりWEPが使われているAPは、攻撃者がairodump-ngなどでパケットをキャプチャ、解析することで通信内容が筒抜けになってしまう。
それだけでなく、WEPだったり無暗号だったりとセキュリティが甘く設定されているAPの中には、
不正なDNSサーバとフィッシングサーバを仕掛け、攻撃者のDHCPサーバによりその不正サーバを設定、誘導させるものや、
経路中にルータを一つ置いて通信パケットから暗号化されていないパスワードを収集するようなハニーポットも存在する。

例えば次のようなコマンドをルータで動かせばFTPパスワードがホイホイ
# tcpdump -nX|egrep -2 'USER|PASS'

base64エンコされたbasic認証のユーザとパスをホイホイ
# tcpdump -nX port 80|grep 'Basic'
# echo "YWRtaW46cGFzc3dvcmQ"|base64 -d


通信経路を暗号化する技術としてVPNっていうのもあるけど、今はSSHフォワーディングでセキュアな回線を確保してみる。

脆弱で蜂蜜臭いAPから暗号化されていないWEBページを安全に見たり、暗号化されていないbasic認証を安全に利用したりするときはsquidとsshフォワーディングの組み合わせで幸せになれるでゲソ。

自宅サーバにsquidとsshサーバを構築する

squid.conf
acl all src all
acl manager proto cache_object
acl localhost src 127.0.0.1/32
acl to_localhost dst 127.0.0.0/8 0.0.0.0/32

acl localnet src 10.0.0.0/8 # RFC1918 possible internal network

acl SSL_ports port 443 # https
acl SSL_ports port 563 # snews
acl SSL_ports port 873 # rsync

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 Safe_ports port 631 # cups
acl Safe_ports port 873 # rsync
acl Safe_ports port 901 # SWAT

acl purge method PURGE
acl CONNECT method CONNECT

http_access deny all

http_access allow manager localhost
http_access allow purge localhost
http_access allow localhost
http_access allow localnet
http_access deny manager
http_access deny purge
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports

icp_access allow localnet
icp_access deny all

http_port 30001

hierarchy_stoplist cgi-bin ?
cache_mem 16 MB

access_log /var/log/squid/access.log squid
:
SSHでフォワーディングして利用するから基本、設定を変更したりポートを開放する必要はないけどもsquidの設定に困ったときのために一応設定ファイル晒しとく

クライアントから自宅squidサーバまでポートフォワード
$ ssh -f -N -C -L 8080:mydomain.dip.jp:30001 user@mydomain.dip.jp -p37383
sshの-Cオプションでgzip圧縮を有効にすると、劣悪な通信環境において通信速度が2倍近く速くなったりする。

自宅squidサーバからクライアントまで強力なRSA暗号で作られたトンネルが8080ポートに開通したゲソ。
$ lsof -i:8080
COMMAND   PID USER   FD   TYPE   DEVICE SIZE/OFF NODE NAME
ssh 10419 phtm 4u IPv6 34375863 0t0 TCP ip6-localhost:http-alt (LISTEN)
ssh 10419 phtm 5u IPv4 34375877 0t0 TCP localhost:http-alt (LISTEN)

sshトンネルを指定してちょろめを起動
$ google-chrome --proxy-server=localhost:8080
これでちょろめの通信はすべて、暗号化されたトンネルをくぐり抜け、自宅の安全なsquidサーバによってウェブコンテンツが中継されるゲソ


あと、motionのリアルタイム動画のポートをsshフォワードすると幸せになれたりする。
motionのリアルタイム動画は認証の仕組みが用意されていないから外に公開することは出来ないけど、
squidと同じようにsshフォワードすれば、外からセキュアに監視カメラのリアルタイム動画にアクセスできる。

リアルタイム動画のポートが8081とするとこんな感じ
$ ssh -f -N -C -L 8081:mydomain.dip.jp:8081 user@mydomain.dip.jp -p37383
$ google-chrome localhost:8081
関連記事

コメント

:
:
:
:
:
管理人のみ表示を許可