Wednesday, April 9, 2014

ネットワークカメラをLinuxで使う

自分がつかってるのはJPT3815Wだけど、基本的にほかも同じじゃないかと
TS-WLCAMもLinuxでは使えるみたいだし

レビューではないのであしからず。なんか間違ってるかもしれないのでそれは指摘していただいても結構です。

セキュリティ

自分が買うときに一番知りたかったのがセキュリティに関してです。どうせBASIC認証しかないんでしょ?とか思ってら本当にそうでした。接続先もHTTPページです。wgetでいくらでも取ってこれます。

つまりそのまま使うと

  1. 画像がネットを平文で流れるので他人に自分ちの内部が駄々漏れ。
  2. Basic認証が暗号化されてるなんて聞いたことありません。駄々漏れです。ログインもし放題です。

外部からアクセスするための設定


  1. ポートフォワーディング
これ。
一般のルータでも出来る。一般ルータを買って一般のことをしてください。でも下も読んでくだし。日本で売ってる一般のルータではできないことが必須かもしれません。

通信の暗号化

セットアップ

  1. DDWRTが走ってるルータ。
  2. sshd on
  3. パスワードログインの無効化
  4. 外部からもSSHでマネージ出来るようにする

フォワーディング

ルータにSSHできれば80%終わってます。
あとはSSH接続するときに -L でローカルのポートとリモートのポートをつなげてください。
例:
ssh -L12345:<camera ip>:54321 <router ip>
こちらから12345に接続すれば向こうの54321に行くという仕組みです。カメラのWebサーバを54321で待機するようにすれば上ので行ける

これでブラウザひらいて localhost:12345 でカメラのページにつながるはず。

安全?

理論的には全通信をSSHで暗号化していればカメラとのやりとりがすべて暗号化されているはずです。

DDWRTいる?

sshd走れば別になんでもいいんじゃないですかね。

Linuxで使う

サブジェクトにしておいて適当に閉めます。
ブラウザでアクセスして行けることがわかったらあとはwgetとBasicで。

autosshで自動再接続とポートフォワーディング

別にターミナルを一つ専有してもいいのに無駄に -f コマンドとかつけちゃうメモばかりをネットで見つけるのでここに書いておく

基本的にautossh用のオプションは -M <port> のみでOK
そこにsshの -C (compression) -N (no execute command) -L (Local port forwarding) で大体したいことが出来る

例:

autossh -M 50000 -C -N -L<local port>:<dest ip on remote>:<dest port> <ssh server>

いやむしろ -C -N も煩わしいって人は

autossh -M 50000 -L<local port>:<dest ip on remote>:<dest port> <ssh server>

いや、ポートフォワーディングしたいんだから~/.ssh/configにもう-Lの指定はしてるでしょ、と買って人は

autossh -M 50000 <ssh server>

これでいいんですよ。
そもそも -f で裏に追いやってあとで使ってるの忘れたらいやじゃないですか。なんでみんな -f しようとするの。