SSH2 によるリモートサーバアクセス

SSH2 によるリモートサーバアクセス
リモート環境からサーバをいじらないといけない状況にはよく出くわすと思います。専用サー
バを借りて運用しているこのサイトでも同様です。デフォルトでは telnet アクセスが有効です
が、これはネットで情報をやりとりする場合は平文(データは暗号化されずにそのまま流れる)で
す。極端な例ですが、ネットのどこかで経路中のサーバ上で流れるデータを監視できたとする
と、telnet にログインするためのパスワードから「su - root」として入力したパスワードも見ること
ができてしまう可能性もあるかもしれません。
ですので、遠隔操作の際は安全ために SSH にてアクセスするのが一般的です(telnet ポートは閉じ
てアクセスできないようにする)。
いきなり telnet を閉じると経路自体が途絶えてにっちもさっちも行かなくなるので、先に SSH に
アクセスする準備を進めます。
SSH にてサーバにアクセスする
iptables にて、ポート 22(ssh)が開いているか確認します。
iptables -L
の一覧で ssh が ACCEPT になってますでしょうか。
外からのアクセスが許可されていない(DROP 状態)なら ACCEPT にします。
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -p tcp --sport 22 -j ACCEPT
プロセスを見るため、
ps -aux
としたときに ssh サービスが起動しているか確認します。といっても、デフォルトで ssh のサービ
スが起動していると思いますので その場合はサーバはアクセス準備できてます。
■クライアントマシンから SSH ログイン
どちらかというと、外部アクセスするためのツール選びが重要です。ここでは、Putty というのを
使用します (Windows 環境からアクセスする場合 )。以下からダウンロードできます。
http://www.chiark.greenend.org.uk/‾sgtatham/putty/download.html
「putty.exe/puttygen.exe」を使います。
また、putty.exe を日本語化するために以下よりをダウンロードします。「PuTTY で ISO 2022 によ
る日本語入力・表示を可能にするパッチ」より、「puttyjp.exe」を得ます。
1
http://hp.vector.co.jp/authors/VA024651/download.html
puttyjp.exe を起動します。ここで、アクセスするホスト名を指定し SSH をチェックし、一番下の
「開く」ボタンを押します。
これでユーザ名・パスワードを聞いてきますので、後は telnet と同じように操作できます。
以上で、ネット中の経路は暗号化されますので telnet を無効にすると一件落着・・・・ではありま
せん (^_^;;。ユーザ名とパスワードさえ分かれば誰でもアクセスできてしまいます。総当りに
ユーザ名・パスワードを連投されるといずれは破られますので、もっと強固にします。
次に、SSH2 で RSA 公開鍵を使ってアクセスする設定を行います。
SSH2 で公開鍵を使ってサーバにアクセスする
またサーバ側の設定に戻ります。念のためですが、設定が完全に完了するまでは telnet は生かし
ておいてください(ssh2 の設定に失敗した場合は telnet で解除できるように)。
2
■公開鍵と秘密鍵の生成
先ほどダウンロードした「puttygen.exe」を起動します。
「Generate」を選択すると、プログレスバーが表示されます。ここで、マウスをぐりぐり動かすと
バーが進行します。どんどんマウスを小刻みに動かしながら進めると、以下のような表示となり
ます。
「Key passphrase」に入れるパスフレーズがサーバに ssh2 で入る場合に入れるものです(暗号キー
とこのパスフレーズにてログイン権限を強化しているわけです)。「Confirm passphrase」にも同じ
ものを入れます。
この後、「Save public key」ボタンを押して「xxxx.pub」のようなファイルで保存します。「Save
private key」ボタンを押して「xxx.ppk」のようなファイルで保存します。これが、公開鍵(public)
・
秘密鍵(private)と呼ばれるものになります。秘密鍵は、クライアントからログインするときに必
要となります。
この後、公開鍵 (xxx.pub) をサーバに転送してください。
■サーバにて公開鍵を ssh2 用に配置
3
以降、サーバ(Linux)側での設定です。鍵の設定は各ユーザごとに指定します。
例えば、
「hoehoe」のユーザに作成した公開鍵を設定するとします。ユーザのホームディレクトリ
に「.ssh」ディレクトリを作成し、ここに ssh2 用の公開鍵を配置することになります。
mkdir /home/hoehoe/.ssh
cd /home/hoehoe/.ssh
とし、
「.ssh」ディレクトリ内に Windows で作成した「xxx.pub」をコピーしてきてください。そし
て以下を実行します。
ssh-keygen -i -f xxx.pub >> authorized_keys2
「authorized_keys2」が ssh2 用の公開鍵として使用されるものです。「xxx.pub」は不要となりますの
で削除しても OK です。
これで Putty の ssh2 でログインユーザ名「hoehoe」で入ると、パスフレーズを聞いてきます。指定
したパスフレーズでログインすることが可能となります(xxx.ppk の秘密鍵も Putty にて指定して
おく必要があります)。
サーバのセキュリティ設定を強化
ログインが ssh2 で指定の秘密鍵とパスフレーズによりできることを確認してから、サーバのセ
キュリティを強化していきます。ssh2 でリモート接続してから行うようにしてください。
■ telnet サービスを遮断
telnet の場合は暗号化されずに垂れ流しですので、これ自身を iptables にて遮断します。
iptables -A INPUT -p tcp --dport 23 -j DROP
iptables -A INPUT -p tcp --sport 23 -j DROP
■ SSH のセキュリティ強化
「/etc/ssh/sshd_config」が ssh の設定ファイルになります。これを vi で開き、以下のように変更しま
す。
#PermitRootLogin yes
↓
PermitRootLogin no ← root でのログインを禁止
#PasswordAuthentication yes
↓
PasswordAuthentication no ← パスワードでのログインを
禁止 ( 鍵方式によるログインのみ許可 )
#PermitEmptyPasswords no
↓
PermitEmptyPasswords no ← パスワードなしでのログインを禁止
#ServerKeyBits 768
↓
ServerKeyBits 1024 ← 暗号強度を 1024 ビットにする
PuTTY からの接続時に Server refused our key
4
というエラーが出てしまうことの対処
そして、ssh を再起動します。
/etc/rc.d/init.d/sshd restart
これで、鍵を使用した ssh2 ログインしか許されないようになります。
5