Back-home
MD5 / Others
Top view / Search view / Administer

OpenSSH 2003/03/19 (Wed)

インターネットの一般ユーザーは、今なお平文(ひらぶん)で通信していることが多く、セキュリティ上いつでも傍受可能な危険な状態が続いております。たとえば、ユーザーがメールを受信するとき、POPサーバ経由であればユーザーのメール内容だけでなくパスワードも丸見え状態となっています。クライアントPCからプロバイダ提供のWWWサーバへ FTP によるデータ転送を行っているときも、パスワードは暗号化されずに送信されています。SSL, VPN ,無線LAN による暗号化などが急速に普及していますが、ネットワーク全体というわけではありません。メールサーバをAPOP 認証に変更しても、パスワードだけの暗号化です。
また、telnet,rcp,rsh,rlogin (などの r 系コマンド),ftp などでアクセスできるサーバーは、セキュリティ上"自宅に鍵をかけずに外出しているような"ものです。

データ転送を SSH (Secure SHell) により暗号化すると、rsync コマンドなどによりサーバ間のミラーリングを自動化( cron など)することも可能です(すべて、フリーソフトで実現します)。

まず、ローカルネットワーク以外のクライアントPCから OpenSSH サーバの動作を確認できる環境を作ります。たとえば、OS Windows に WinSCP をインストールすると、簡単に scp (secure copy) が利用できるようになります。パネル、マニュアルすべて英語表示ですが、インストール・操作はとても簡単です。Windows 95/98/ME/NT/2000/XP に対応したフリーソフトです(最新バージョン 2.2 ファイル名 winscp220setup.exe 03/03/19現在) 。 WinSCP は便利なソフトですので、一般のサーバで利用できるようであれば Windowsであっても ftp は不要となるはずです。

FreeBSD 4.0以降では、SSH は OSのベースシステムとなっています。オープンソース OpenSSH のインストール、バージョンを確認します。

% ssh -V

     OpenSSH_2.9 green@FreeBSD.org 20010503, SSH protocols 1.5/2.0
などという表示が得られたら、この ssh はプロトコル 2 をサポートしています。なお、プロトコル 1 では、1.3 1.5 と表示されるようです。また、OpenSSH_3.4p1 など 文字 p の付いたバージョンは「 P リリース」とよばれ、移植用として配布されているものです。バージョン 3.4 以降が安全です(03/03/19現在)。それ以前のバージョンは、セキュリティ勧告(2002/6/26)に対応していませんので、デフォルトでは使用しないで下さい。

次いで、SSH サーバ起動の有無を調べます。

% ps aux | grep sshd

     root 77(←pid) 0.0 1.1 2740 2008 ?? Is 8:46PM 0:00.34 /usr/sbin/sshd

pid やプログラムソフトの起動を確認します。もし、サーバが起動していないときは、rc.confファイルを編集します.

# vi /etc/rc.conf

最終行に
     sshd_enable="YES"
を追記して、OSを再起動し ssh デーモン を起動するようにします。

次に、telnet,rcp,rsh,rlogin (などのr 系コマンド),ftp などのセキュリティ上危険なコマンド実行を停止し、ポートを閉鎖します。

# vi /etc/inetd.conf

使用中のコマンド行すべてをコメントアウトします(#を行頭に付ける)。

# ps aux | grep inetd

スーパーサーバデーモン inetd の pid を調べます。inetd を再起動します。

# kill [pid]
# /usr/sbin/inetd -wW

パスワードの暗号化保護、通信の暗号化送信は、
telnet(port 23)⇒ ssh (port 22) rcp⇒ scp ftp⇒ sftp (port 21) rlogin⇒ slogin のコマンドにより可能となります。
実際には、

% ssh [<-l loginname>] <host | user@host> [<option>]
% ssh ユーザ名@ドメイン名
% ssh user@exampledomain.com

% scp <remotehost>:<remotefile> [<localfile>]
% scp ユーザ名@ドメイン名:[リモートホストのディレクトリのパス] [ローカルのディレクトリのパス]
リモートホストの指定ファイルをローカルホストにコピーします。
% scp remoteuser@exampledomain.com:/home/user/testfile.txt ./testfile.txt

scp のオプション
     -p ファイル属性を保存した状態でコピーする。
     -r ディレクトリを再帰的にコピーする。
     -C データを圧縮して転送コピーする。

% sftp <remotehost> | <user@remotehost>
% sftp ユーザ名@ドメイン名
% sftp user1@exampledomain.com

ftp と同じように、put, get など使えます。
ログアウトするとき、

% logout

必ず、初回は以下のメッセージが表示され、パスワードの入力を求められます。
     Host key not found from the list of known hosts.
     Are you sure you want to continue connecting (yes/no)? yes
     Host 'exampledomain.com' added to the list of known hosts.
     user@exampledomain.com's password: *******

ホームディレクトリ最上位に ディレクトリ .ssh ,ディレクトリ内に ファイル known_hosts が作成されていれば、SSH 接続は成功です。

ssh, slogin, scp, sftp は、デフォルトでは接続時、パスワード/パスフレーズの入力を必ず要求されます。SSH で使われる認証方法(原文引用)のうち、公開鍵認証ないしホストベース認証を利用すると、パスワード/パスフレーズの入力を省略できます。
SSH 認証方法をご覧下さい。

     A. パスワード認証
       PasswordAuthentication (SSH1, SSH2)

     B. 公開鍵認証
       PubkeyAuthentication (SSH2)
       RSAAuthentication (SSH1)

     C. ホストベース認証
       HostbasedAuthentication (SSH2)
       RhostsRSAAuthentication (SSH1)

     D. その他

ここで、ssh には、プロトコル1, プロトコル2 があります。ssh2 は ssh1 よりセキュリティに優れています
また、ssh ログインをパスワード要求なく実行できれば、cron などを利用することで、定時的にリモートサーバのミラーリング(rsyncコマンド)ができます。
こちらをご覧下さい。また、www.jp.freebsd.org/QandA/の グループ名: ssh のリンク先から、ssh, 認証についての多くの情報が得られます。

ssh2 を使用するホストベース認証の場合、
/etc/ssh/sshd_config, /etc/ssh/ssh_config, /usr/libexec/ssh-keysign, ~/.shosts などを変更しますが、


リモートホスト
# vi /etc/ssh/sshd.config

    ..................................
49行目あたり
    # rhosts authentication should not be used
    RhostsAuthentication no (← コメントを外して、必ず no とします)
    # Don't read the user's ~/.rhosts and ~/.shosts files
    IgnoreRhosts no
    # For this to work you will also need host keys in /etc/ssh/ssh_known_hosts
    # RhostsRSAAuthentication no
    # similar for protocol version 2
57行目あたり
    #RhostsRSAAuthentication no
    # similar for protocol version 2
    HostbasedAuthentication yes
    ..................................
    ..................................

ローカルホスト
# vi /etc/ssh/ssh.config

    ..................................
    Host *
    ..................................
    ..................................
    # SSH2
    HostbasedAuthentication yes
    PreferredAuthentications hostbased,publickey,password
の2行を挿入します。

ローカルホスト
# chmod 04511 /usr/libexec/ssh-keysign

リモートホスト
% touch ~/.shosts
% vi .shosts

    アクセス許可するホスト名、ユーザ名を列記する
    ns.example.ne.jp user1

要点のみ転記しましたので、http://www.jp.freebsd.org/QandA/HTML/1578.html を参照しながら設定します。

ファイルなどの変更後に、

# ps ax | grep sshd

pid を確認後、再起動します。

# kill -HUP [pid]





end 2003/02/16 (Sun)





Next(+5) / Back(-0) / Search view / Log view / Administer

- Harpist note ver1.02 -