トップ «前の日記(2008-09-04) 最新 次の日記(2008-09-16)» 編集

ORCA愉快日記

2004|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|04|05|06|07|10|11|12|
2012|01|02|09|
2013|04|

2008-09-10 sshで安全にリモートメンテナンスする方法

_ [orca] sshで安全にリモートメンテナンスする方法

orcaのリモートメンテナンスをするためにルータのポート8000をWAN側に開けている、というベンダの話を聞いたので、orcaでsshを利用して安全にリモートメンテナンス(サポート先にglclientで接続)する方法のメモを残しておきます。この方法だと、ポート8000を外部に開いておく必要はありません。

もしポート8000を開けているのであれば、攻撃に遭う可能性も高くなります。デフォルトのID:ormaster PASS:ormaster123のような安易なパスワードのまま公開しているのだったら、いつ事故が起こってもおかしくない状態なのでやるべからず。セキュリティは必要に応じて、2重3重またはそれ以上に確保しておいてください。

このsshを用いたリモートメンテナンスはあくまで一例なので、まともなルータ同士でVPNを利用するなり、ソフトウェアVPNを利用するなり、必要に応じて選定すること。

□ sshで安全にリモートメンテナンスする方法  
安全にリモートメンテナンスを行うためには、VPNなどを使った通信路の暗号化が
不可欠です。また、その際は外部からの侵入を受けないような対策も必要です。
  
いわゆるVPNと呼ばれるものにはいくつか種類があり、色々な製品がありますが
下記では、sshのポートフォワーディング機能を利用して
ベンダ側のマシンから、医院側のORCAサーバに接続するケースを想定しています。
  
  
1.sshのインストール
  sshのインストール、設定を行う。
  # aptitude update
  # aptitude install ssh
  または
  # aptitude install openssh-client openssh-server
  
2.sshの設定
  ここの設定が一番重要。
  sshを狙ったインターネットからのアタックは多いので、安易な設定や
  安易なパスワードの状態で外部に公開すると、1日かからずに侵入される
  可能性が高いので要注意。
  
  # vi /etc/ssh/sshd_config
  にて、設定を変更。root権限で動かしたgeditでも何でも良いけど。
  
  設定そのものを解説すると長くなるので、ORCAプロジェクトのセキュリティ参照。
  sshをセキュアな設定にする方法や解説は、ググればいくらでも出てくるので
  各自で検索して確認しておくこと。
  ------------------------------------------------
  /etc/ssh/sshd_configの推奨設定
  
  * 空のパスワードを禁止する
  PermitEmptyPasswords no に設定
  外部公開しているマシンなら当然
  
  * root権限でのログインを禁止する
  PermitRootLogin no に設定
  root権限の必要な作業は、一般ユーザでログインしてsudoを
  利用するか、suコマンドで行う
  
  * ログインできるユーザを限定する
  AllowUsers <ユーザ名> を設定
  設定は簡単で効果は大きい。sshログインするユーザのみ指定。
  
  * パスワード認証方式を不許可にして、鍵認証方式のみに限定
  PasswordAuthentication no に設定
  鍵がないとパスワードが分かっていてもログインできません
  (鍵認証の設定も必要。詳細はググるべし。)
  
  * どうしてもパスワード方式で運用しなければならないとしても
  よくあるユーザ名(admin,root等)は使わず、パスワードは
  十分長い文字数にして、辞書に載っていないものにする。
  ------------------------------------------------
  
  設定を変更したら保存して
  # /etc/init.d/ssh restart
  でsshデーモンを再起動して設定を有効にする。
  
  そして、リモートメンテ用のマシンと同じLAN内で問題なく接続できることを確認する。
  $ ssh <ユーザ名>@<IPアドレス>
  
4.ルータの設定
  納入時などに、医院側のルータの設定を行う。
  この際、ポート8000を開かなくても、sshのポートフォワーディングが
  利用できるので、ポート22のみ開けるような設定にすればOK。
  
  個別のルータの設定については触れないが、ルータの製造メーカによって
  「ポート転送機能」「サーバ公開機能」などと呼ばれるNAPTの機能を設定する。
  つまりは、WAN側からルータのポート22番などへの着信を
  LAN側のORCAサーバのポート22番に転送するような設定を行う。
  
  ベンダ側から、遠隔でsshログインできることを確認する。
  
  -------------------------------------------------------------
  #YAMAHAのルータ(RT58iなど)では、ルータのssh機能を有効にしている場合
  #ポート22がかぶるのと、YAMAHAのルータではsshのポートフォワーディングをサポートしていないので
  #ルータのsshポートを変更したり(sshd listenコマンド)
  #PC側のsshポートを変更することで回避する必要があるでしょう。
  #
  #参考 YAMAHA SSH関連ドキュメント
  #http://www.rtpro.yamaha.co.jp/RT/docs/sshd/sshd_command.html
  
  #ポート22へは、インターネットからのアタックが多いので、セキュリティを
  #高める目的では、外部へはポート22以外の番号を開けたほうがよい。
  #(その際は、sshの接続に-pやscpの接続に-Pオプションが必要。)
  
  #ここで、さらにORCAサーバ側でiptablesなどでパケットフィルタリングを
  #設定することにより、sshはベンダ側のグローバルIPからの着信のみ
  #受け付けるような設定にするとより効果的。というか、かけておくこと。
  -------------------------------------------------------------
    
5.orcaでのsshによるポートフォワーディングのやり方
  ようやく本題。
  
  ベンダ側のマシンでターミナルを開き
  $ ssh -L 18000:<ORCAマシンのローカルIP>:8000 <ログインユーザ名>@<医院のルータのグローバルIP>
  を実行する。
  
  18000は任意のポート番号なので、1024より上位の使用されていないポートで
  あれば何番ポートでも良い。8000はglserverで指定しているポート。
  
  例) $ ssh -L 18000:192.168.0.10:8000 orcauser@111.111.111.111
  これで、パスワード認証がうまくいけば、sshによるトンネル(暗号化された通信路)
  が作成され、ベンダ側マシンでローカルポート18000に接続すると、(sshのトンネルを経由して)
  医院側のORCAマシンのポート8000に転送されるようになった。
  ターミナルを閉じるとセッションが切断されてしまうので、開いたままにしておく。
  
    (glserver)
       8000
         |
         |
      (ssh)22---|医院ルータ|22===========|ベンダルータ|---(ssh)18000---(glclient)
  
  そこで、別のターミナルを開いて
  $ glclient -dialog
  を実行する。ホストを「localhost」  ポートを「18000」にして接続すると
  医院側のORCAサーバの画面が見えるでしょう。
  
  ここでのミソは、ベンダマシン側から見ると"ローカルポート18000"
  に接続すれば、遠隔地の医院のORCAサーバが見えているということ。  
  
  
  
  上記のsshによる接続の場合だと、glclientの通信をそのままsshの
  トンネル上に流すだけなので、画面全体を転送するVNCなどに比べて帯域幅が必要ない。
  確認したことはないですが、ISDN回線でもいちおう実用になると思います。
  
  また、ISDNなどのように回線が細い場合は
  $ ssh -C -L 18000:192.168.0.10:8000 orcauser@111.111.111.111 
  のように-Cオプションを付けて転送データを圧縮すれば、体感速度が
  改善されると思われるので、付けたほうがいいかもしれません。
  回線が太い場合は、上記の圧縮オプションは効果がないと思われるので付けなくてよい。
  
  
  (余談) ポート8000を開けているのが、glserver-glclient間のSSL接続による
  ものだったら、まだ問題は少ないんですけどね。既存のベンダでglserver通信の
  SSL接続を行っているのは、どのくらいの割合いるんでしょね。
  誰か知っていたら教えてください。
  
  (余談2) このsshによるトンネルにVNCのパケットを通すことで
  セキュアに画面を参照することもできます。Windowsのリモートデスクトップ
  等も、rdesktopなどのソフトを利用することで参照可能です。
  商用だと、PCAnywhereなりPacketiXなどでも同様のソリューションがあります。
  
□ 参考URL
man sshやman sshd_configやman ssh_configなども参照。
  
SSHによるポートフォワーディング
http://www.sb.soft.iwate-pu.ac.jp/~yushi/memo/ssh_port_forward.html
OpenSSH 日本語マニュアルページ
http://www.unixuser.org/~euske/doc/openssh/jman/
九州工業大学 学生自治ネットワーク委員会 - ポートフォワーディング
http://www.club.kyutech.ac.jp/support/manual/ssh.html#04

トップ «前の日記(2008-09-04) 最新 次の日記(2008-09-16)» 編集