ラベル ssh の投稿を表示しています。 すべての投稿を表示
ラベル ssh の投稿を表示しています。 すべての投稿を表示

2011年10月11日火曜日

Tera Term

http://ttssh2.sourceforge.jp/

久々にターミナルソフトをチェックしてみたら、TeraTermがBSDライセンスで改めてリリースされていますね。あまり変わり映えはしませんが、Puttyなど開発が終了しているソフトが増えるなか、とりあえずサポートされていることは○ですね。


2008年8月15日金曜日

PuTTY No.002(Pageant)

PuTTY を使っているのであれば、Pageant を使わない手はありません。何をしてくれるツールかというと、鍵認証のパスワード入力を行ってくれるエージェントです。

使い方ですが、PuTTY をインストールすると一緒にインストールされるので、それを前提に説明します。

  1. Pageant を起動します。
    起動すると、タスクトレイに、ターミナルが帽子をかぶったアイコンが表示されます。
    やっぱり、‘エージェント’なので、それ風にしてあるということでしょうか・・・
    また、常に使うのであれば、[スタートアップ]に放り込んでおくといいでしょう。
  2. 鍵認証で使う鍵を Pagent へ登録します。
    この作業は、起動毎に毎回必要です。鍵が多いと面倒ですね。
    • タスクトレイの Pagent を右クリックし、[Add Key] を選択します。
    • 鍵ファイルを要求されるので、拡張子が ppk の PuTTY Private Key Files形式のファイルを選択します。(例:id_rsa.ppk)
    • [Pagent: Enter Passphrase] 画面で、選択した ppk ファイルのパスフレーズ(パスワード)を求められるので、パスワードを入力し、[OK] をクリックします。
    これで、とりあえずの準備は完了です。
  3. PuTTY でセッションを開くと、Pagent に鍵ファイルが登録済みであれば、パスワード(パスフレーズ)を入力する必要はありません。
これで、パスワード入力が軽減されました。Pagent は再起動毎に、鍵ファイルを選んで、パスワードを入力して、準備する必要があります。面倒なのですが、これが、一度登録されたら恒久的に使われるようでは、逆にセキュリティが低下してしまうので、現状の方法がいいと思います。

おまけといってはなんですが、Pagent への鍵の登録は、上記の方法でも可能えすが、PuTTY の鍵ファイル( .PPK )をダブルクリックしても、[Pagent: Enter Passphrase] 画面が表示され、パスフレーズを入力できます。(わざわざ、Pagent を起動してメニューから [Add-Key] を選択する必要はありません。)まあ、鍵ファイルが奥深いところにあったりすると、Pagent を起動してから鍵ファイルを登録したほうが早いような気もしますが。

また、これもおまけですが、Pagent 起動後は、右クリックで出てくるメニューで、Saved Session を開くと設定保存済みのセッション情報を選択し、起動できます。

PuTTY もパーフェクトというわけではないですが、環境を整えていくと結構使えます。PuTTY 自体は軽くて便利です。また、Tera Term 等に比べても安定しているように感じます。

更に余談ですが、‘ぷてぃ’と読むのではなく、‘ぱてぃ’と読むようですね。

PuTTY - Wikipedia
> PuTTY(パティ)は、Simon Tathamが開発・公開しているターミナル
>エミュレータである。 MIT Licenseのオープンソースソフトウェアである。

2008年8月3日日曜日

自宅サーバ構築 No.010(TCP Wrapper)

何も設定されていない TCP Wrapper ですが、まずはお決まりの設定だけ実施しておきます。hosts.deny で ALL:ALL を指定しておきます。

ここで、hosts.allow に何も指定していないと、すべて拒否することになってしまいます。ですので、ssh での接続だけは許す為に、ローカルネットワークからの ssh だけ許可するために、hosts.allow に ssh:10.0.0. とローカルネットワークアドレスを指定ておきます。

#/etc/hosts.allow
sshd: 10.0.0.

#/etc/hosts.deny
ALL:ALL
設定は、ファイル編集後、即時反映されます。ゆるやかに設定するのであれば、許可(hosts.allow)を設定し、拒否(hosts.deny)を設定するという順で設定したほうがいいでしょう。

誤って、hosts.allow の記述を削除しただけで、sshd:10.0.0. と追加し忘れると、ssh による接続すらできなくなるので、hosts.allow / hosts.deny を編集する場合、ssh セッションを残したままで、狙い通りの設定になっているか確認したほうがいいでしょう。

xinetd は、セッション開設時のチェックになるので、接続済のセッションは影響されません。

(もう少し設定を続けます・・・)

2008年7月16日水曜日

自宅サーバ構築 No.002(SSH設定)

とりあえずCentOSをインストールし終わりましたが、当然、このままでは公開できません。まずは、いくつかセキュリティ面で設定する必要があります。

まずは、SSHに必要な設定を行います。

  • rootでのログインを禁止する
  • パスワード認証を禁止する
  • 公開鍵認証のみ許可する
まず、インストール直後は、SSHがインストールされており、リモートからrootでログイン可能な状態なので、リモートからrootでログインします。

※以下、PuTTYで操作しています。

以下の通り、最初は警告が表示されますが、そのまま[はい]をクリックします。


  1. root 以外のユーザーを作成
    rootでのログインを禁止するわけですから、root以外のユーザーを作成する必要があります。
    # useradd -d /home/hoge -c HOGE -u 1001 hoge
    # passwd hoge
    Changing password for user hoge.
    New UNIX password:
    Retype new UNIX password:
    passwd: all authentication tokens updated successfully.
  2. root でのログインを禁止
    以下の設定を実施し、rootでログインできないこと、作成したユーザーでログインできることを確認します。
    # vi /etc/ssh/sshd_config
    :
    #PermitRootLogin yes ← 標準はデフォルトがyes
    PermitRootLogin no
    :

    # service sshd restart ← 設定反映
    sshd を停止中: [ OK ]
    sshd を起動中: [ OK ]
  3. 公開鍵作成
    パスワード認証を禁止する前に公開鍵認証を設定します。公開鍵認証前にパスワード認証を禁止するとログインできなくなっていまいますから・・・ :-)
    $ ssh-keygen -b 2048 -t rsa -C hogehoge
    Generating public/private rsa key pair.
    Enter file in which to save the key (/home/hoge/.ssh/id_rsa):
    Created directory '/home/hoge/.ssh'.
    Enter passphrase (empty for no passphrase):
    Enter same passphrase again:
    Your identification has been saved in /home/hoge/.ssh/id_rsa.
    Your public key has been saved in /home/hoge/.ssh/id_rsa.pub.
    The key fingerprint is:
    xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx hogehoge
  4. 公開鍵を authorized_keys へ追加
    $ cat $HOME/.ssh/id_rsa.pub >> $HOME/.ssh/authorized_keys
    $ chmod 600 authorized_keys ← パーミッションを600に変更
    $ ls -l authorized_keys
    -rw------- 1 centuser centuser 398 7月 17 09:20 authorized_keys
    $ rm id_rsa.pub ← 不要なので削除
  5. id_rsa を保存
    id_rsa をターミナルソフトを起動するクライアントへ保存します。これがなくなってしまうと公開鍵の作成からやり直しになるので要注意です。
  6. id_rsa の変換(PuTTY の場合)
    TeraTerm 等では、id_rsa がそのまま使えるので、変換は特に必要ありません。PuTTY の場合は必要になるので、以下の通り変換しておきます。
    • PuTTYgen を起動します。
    • [PuTTY Key Generator]画面で、[Conversions]-[Import key]で保存した id_rsa を開きます。
    • [PuTTYgen: Enter Passphrase for key]画面で、パスフレーズを入力します。
    • [PuTTY Key Generator]画面で、[Save private key]をクリックし、id_rsa.ppk を作成します。
  7. ターミナルソフトで公開鍵認証で接続
    ターミナルソフトで公開鍵認証で接続できることを確認します。
  8. パスワード認証を禁止
    公開鍵認証での接続が成功することを確認して、パスワード認証を禁止します。
    設定後、パスワード認証できないことを確認します。
    # vi /etc/ssh/sshd_config
    :
    #PasswordAuthentication yes ← 初期設定では yes なのでコメントアウト
    PasswordAuthentication no
    :

    # service sshd restart ← 設定反映
    sshd を停止中: [ OK ]
    sshd を起動中: [ OK ]
これで、リモートからは、root 以外のユーザーで、公開鍵認証の設定可能なターミナルからのみログインできるようになりました。

ひとつ気になるのは、PuTTY でパスワード認証をチャレンジすると
No supported authentication methods available
と表示されて、拒否されます。動作は満たしていますが、パスワード認証を禁止しているということがわかってしまいます。これはできれば隠匿したいですね。パスワード認証時のエラーを返すほうがいいと思いますが、そういう動作をさせると問題あるんでしょうかね。

2008年7月11日金曜日

ssh鍵認証 No.001(Linuxで鍵作成)

sshで鍵認証する場合の一例です。

  1. ssh-keygen で id_rsa と id_rsa.pub を作成します。
    適当なパスフレーズを入力して作成します。
    ssh-keygen -t rsa -b 2048
  2. id_rsa.pub を authorized_keys に追加します。
    cat $HOME/.ssh/id_rsa.pub >> $HOME/.ssh/authorized_keys
  3. id_rsa を 接続するターミナルソフト側で読み込みます。
    • PuTTYでは、id_rsa を PuTTYgen で private key として保存します。
  4. ターミナルソフトで接続時に id_rsa を指定して接続します。
    • PuTTYでは、private key として保存した、id_rsa.ppk 等を指定します。
    • TeraTermでは、id_rsa をそのまま鍵として指定します。
ちなみに、鍵認証を利用するメリットは、何でしょうか。まあ、「鍵を持ってないと認証を受けられない」という当たり前のことに加え、パスワードがネットワーク上を流れないことでしょうか。パスワードがネットワーク上を流れないことについては、sshを使っている時点で、暗号化されている為、個人的には必要十分だと思いますが、それよりもセキュリティ的には堅牢です。(解読対象がネットワークを流れないわけですから。)

といってしまうと、確かに鍵認証は、パスワード認証に比べて、より強固なセキュリティを提供してくれるわけですが、大きな落とし穴があります。それは、パスワード認証と併用していると、鍵認証よりも低いセキュリティレベルの認証ができてしまい、パスワード認証可能な環境であれば、「鍵を持っていなくても認証ができる」→「誰でもアタックできる」状態となってしまいます。

以下の様に、sshd_config で、パスワード認証を禁止しておかないとメリットは半減です。
PasswordAuthentication no