Home Update クッキー及びWeb ビーコンについて



OpenSSH によるセキュア通信の構築

OpenSSHの概要

OpenSSH を使ってセキュアな通信を構築していきます。いまや、SSHなしでの通信は考えられないので是非とも導入しておきましょう。




■OpenSSLのダウンロード

Version openssl-0.9.7c
Homepage http://www.openssl.org/
Download http://www.openssl.org/source
Install openssl-0.9.7c.tar.gz

※追記 2005/8/8:openssl-0.9.7d.tar.gzでも動作確認済み。0.9.8の場合だとopenssh で
  エラーが発生した。


 まず、本家OpenSSLよりをソースパッケージをダウンロードしてきてください。ここでは、openssl-0.9.7c.tar.gzをダウンロードして解説を進めていきます。



■OpenSSLのインストール

OpenSSLはデフォルトでは、/usr/local/ssl にインストールされます。デフォルトのインストール先を変更する場合は、--openssldir で指定します。ここでは、オプションを指定せずにインストールを行います。

$ cd /usr/local/src
$ tar xzvf openssl-0.9.7c.tar.gz
$ cd openssl-0.9.7c.tar.gz
$ ./config
$ make
$ make test
$ su
# make install



■OpenSSH のダウンロード

Version openssh-3.7.1p2
Homepage http://www.openssh.com/ja/
Download ftp://ftp.iij.ad.jp/pub/OpenBSD/OpenSSH/portable/
Install openssh-3.7.1p2.tar.gz
RH9:zlib-1.1.4-8.i386.rpm
RH9:pam-0.75-48.i386.rpm (任意)
RH9:tcp_wrappers-7.6-34.i386.rpm (任意)

※追記 2005/8/8:openssh-4.0p1.tar.gzでも動作確認済み(組:openssl-0.9.7d.tar.gz)

 OpenSSH を使用するには、OpenSSL と zlib が必要となります。zlib には、Red Hat9に付属のものを使うことにします。インストールされていなければ、インストールしておいてください。また、OpenSSH を ソースパッケージからインストールする方は、予めRPMパッケージをアンインストールしておきます。

# rpm -q zlib pam tcp_wrappers openssh openssh-server openssh-clients
zlib-1.1.4-8
pam-0.75-48
tcp_wrappers-7.6-34
openssh-3.5p1-6
openssh-server-3.5p1-6
openssh-clients-3.5p1-6

# rpm -e openssh openssh-server openssh-clients

■OpenSSH 専用のユーザーとグループの作成

Privilege separationがデフォルトで有効になっているため、専用のsshd ユーザーの作成が必要となります。sshd は、その他のデーモンプロセスによって使われるべきではないので、ログインできないようにnologin とし、shell も無効に設定します。また、/var/empty の中身は空っぽの状態にしておき、privsepが有効且つ、プリログイン時には、sshd は /var/tempty にchroot されます。詳しくは、/[src]/ README.privsep を参照してください。

# mkdir /var/empty
# chown root:sys /var/empty
# chmod 755 /var/empty
# groupadd sshd
# useradd -g sshd -c 'sshd privsep' -d /var/empty -s /bin/false sshd



■OpenSSH のインストール

 configure オプションには、TcpWrappers との連携を行いたい場合は --with-tcp-wrappers 、PAM 認証を行うのであれば --with-pam が必要となります。また、--with-ssl-dir=/usr/local/ssl でOpenSSLのパスを指定しておきます。

$ cd /usr/local/src
$ tar xzvf openssh-3.7.1p2.tar.gz
$ cd openssh-3.7.1p2
$ ./configure --with-ssl-dir=/usr/local/ssl --with-pam
--with-md5-passwords
$ make
$ su
# make install



■/usr/local/etc/sshd_config の設定

 OpenSSH はデフォルトで、root でのログインが可能な設定にされているので禁止させておきます。

PermitRootLogin no
 
 また、パスワードが設定されていないユーザーのログインを禁止します。デフォルトで有効になっていますので確認してください。コメントがついている場合は、デフォルト値が設定されています。

PermitEmptyPasswords no


■PAM 認証の設定

PAM 認証を有効にするには、/usr/local/src/openssh-3.7.1p2/contrib 配下にあるサンプルファイル、sshd.pam.generic を /etc/pam.d にコピ&リネームーします。

# cd /usr/local/src/openssh-3.7.1p2/contrib/
# cp sshd.pam.generic /etc/pam.d/sshd

 次に、/etc/pam/sshd を編集しておきます。pam_unix.so の箇所をpam_pwdb.so に変更します。

#vi /etc/pam.d/sshd
#%PAM-1.0
auth required /lib/security/pam_pwdb.so shadow nodelay
auth required /lib/security/pam_nologin.so
account required /lib/security/pam_pwdb.so
password required /lib/security/pam_cracklib.so
password required /lib/security/pam_pwdb.so shadow nullok use_authtok
session required /lib/security/pam_pwdb.so
session required /lib/security/pam_limits.so

■OpenSSH の起動

# /usr/local/sbin/sshd

■OpenSSH の動作確認

 SSH のプロセスを確認後、ポートスキャンして22番ポートが開いているかどうか確認してください。

$ ps aux | grep sshd
root 25828 0.0 0.4 2552 1088 ? S 13:41 0:00 /usr/local/sbin/sshd

$ nmap localhost

Starting nmap V. 3.00 ( www.insecure.org/nmap/ )
Interesting ports on ns1.kororo.jp (127.0.0.1):
(The 1589 ports scanned but not shown below are in state: closed)
Port State Service
22/tcp open ssh
23/tcp open telnet
53/tcp open domain
110/tcp open pop-3
139/tcp open netbios-ssn
901/tcp open samba-swat
953/tcp open rndc
3128/tcp open squid-http
5432/tcp open postgres
8080/tcp open http-proxy

■OpenSSH の自動起動設定

 Red Hat 用の起動スクリプトがデフォルトで用意されているので、これを./etc/r.cd/init.d 以下にコピーしておきます。なお、私の環境では、起動プログラムのパスが、/usr/local/sbin/sshd のため、SSHD=/usr/local/sbin/sshd に編集しなおしています(デフォルトは、SSHD=/usr/sbin/sshd)。

# cd /usr/local/src/openssh-3.7.1p2
# cp contrib/redhat/sshd.init /etc/rc.d/init.d/sshd
# chkconfig --add sshd
# chkconfig --list sshd



■RSA暗号鍵の作成

 認証を強固にするため、OpenSSH では公開鍵とパスフレーズによる認証を行うことが出来るようになっています。SSH2 プロトコルでは、RSA と DSA のどちらかの認証方式を利用することができます。ここでは、TeraTermを使用することを前提として、rsa1 で暗号鍵の作成を行ってみます(TeraTermではrsa1のみに対応しています)。RSA暗号鍵はユーザーごとに作成する必要があり、ユーザーのホームディレクトリの.ssh/ 以下に identityとして作成されます(秘密鍵)。公開鍵は、indentity.pub。まず、一般ユーザーとしてログインしてください。途中、パスフレーズの入力を求められますが、パスフレーズにはパスワードとは違い、空白を挿入することができます。スペースを混在させることでよりセキュアなパスフレーズを作成することができます。他の暗号鍵作成コマンドはこちらを参照

$ ssh-keygen -t rsa1
Generating public/private rsa1 key pair.
Enter file in which to save the key (/home/kororo/.ssh/identity):[ ENTER ]
Enter passphrase (empty for no passphrase):  //パスフレーズを入力
Enter same passphrase again:
Your identification has been saved in /home/kororo/.ssh/identity.
Your public key has been saved in /home/kororo/.ssh/identity.pub.
The key fingerprint is:
2a:c0:b8:c5:c4:15:ed:88:0a:74:b2:6f:a7:c3:7b:cb kororo@serv.kororo.jp

 クライアントからRSAキーでログインする際にはアカウントの公開鍵が authorized_keys ファイルに登録されている必要があるため、以下のようにしてコピーして新規にauthorized_keysを作成しておきます。cp の -p オプションは、タイムスタンプやパーミッションの属性などをそのままコピーします。

$ cd .ssh
$ cp -p identity.pub authorized_keys

 なお、既にauthorized_keys が作成されている場合、以下のようにして追加します。

$ cd .ssh
$ cat identity.pub >> authorized_keys

 次に、秘密鍵ファイルである、.ssh/identity をWindows 上にTeraTerm のディレクトリの中にコピーしておきます。但し、これでは誰でも秘密鍵を盗める状態になってしまうので、2000/XP を使用しているならば、自分のDocuments and Settings 等に置いておきましょう。
 
 次に平分パスワードを無効にし、RSA認証を有効にするために、sshd_config の以下の行を編集します。

# vi /usr/local/etc/sshd_config
PasswordAuthentication no
RSAAuthentication yes

■TeraTermの設定

 TeraTerm を起動し、「設定」→「SSH認証」を選択します。



 「RSA暗号鍵を使う」にチェックを入れ、先ほどコピーした identity のファイルを指定します。ユーザー名を入力し、OKをクリックします。



 「設定」→「設定の保存」でTERATERM.INI に上書き保存します。



 以上の設定を終えたら。「ファイル」→「新規接続」を選択します。



 初めてのログインであれば以下のメッセージが表示されますが、「このホストを known hosts リストに追加する」にチェックを入れ、「続行」をクリックすると次回からは表示されなくなります。



SSH認証の画面が現れたら、ssh-keygen実行時に作成したパスフレーズを入力します。「RSA鍵を使う」のチェックは先ほど設定をしたため、既にidentity が選択された状態になっていると思います。OKをクリックして正常にログインできれば成功です。




■ログを確認する

 上記で正常にログインできることを確認したら、次に本当にRSAでログインできたかどうか確認しておきましょう。以下のように、Accepted rsa と表示されていれば正常にRSAを使ってログインできたことが確認できます。外に出かけた時などに、外部から自宅のサーバーにアクセスする際には秘密鍵が必要となるので常に持ち歩くようにしましょう(; ̄□ ̄

# tail /var/log/messages
Jan 6 16:05:15 ns1 sshd[26545]: Accepted rsa for kororo from 172.16.50.4 port 2706



■各暗号鍵作成のコマンドと生成後のデフォルトの名前

◎OpenSSH1(タイプ:RSA1)

$ ssh-keygen -t rsa1
Generating public/private rsa1 key pair.
Enter file in which to save the key (/home/kororo/.ssh/identity):

◎OpenSSH2(タイプ:RSA)

$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/kororo/.ssh/id_rsa):

◎OpenSSH2(タイプ:DSA)

$ ssh-keygen -t dsa
Generating public/private dsa key pair.
Enter file in which to save the key (/home/kororo/.ssh/id_dsa):







TOPに戻る

Sponcerd Link


Search
 
Web サイト内
Rental Server

【レンタルサーバのXbit】 低価格・高品質のビジネスクオリティー。300メガ1,050円〜30分で サービススタート可能!


容量300MB、月額125円、高性能なサーバが日本最大級のバックボーンに直結。
さくらのレンタルサーバ



当サイトはLinux自宅サーバーの構築を目的としたサイトです。
当サイトに関するご意見、ご要望等は、こちらのメールアドレスよりお願いします。
Beginning | Introduction | Installation | Server |
Security | Tips | Guest Book | Related-Sites
Copyright©2003-2006 KORO All Rights Reserved.
総計:
今日:
昨日: