Linuxユーザの立場から、役立つ情報や困ったときの解決方法を分かりやすく、かつ簡潔に記事にまとめています。主に、Ubuntu 8.04(→9.04)やCentOS 5.2(→5.3)で確認したことですが、他のディストリビューションでも応用できると思います。内容は(1)設定ファイルの書き方(2)役立つソフトウェア紹介やインストール方法(3)便利なコマンドの使い方や活用例(4)困ったときの解決方法です。このページの末尾にキーワード別で記事を分類してあります。また、真上の「ブログ検索」フォームからブログ内の記事を検索できます。

2009年2月11日水曜日

sshサーバの設定 このエントリーを含むはてなブックマーク

本記事では、sshサーバの設定方法をまとめる。以下では、特に指示のない場合はすべてサーバ側の設定および説明とする。

サーバアプリケーションのインストール

yumあるいはapt-getなどで、openssh-serverをインストールする。

サービスの登録

chkconfigコマンドで、サービスの登録をする。

$ chkconfig ssh on

ちなみに、サービスの起動(start)、停止(stop)、再起動(restart)などは

$ /etc/rc.d/initd/sshd start
とする。また、サービス途中で途切れなく再起動するには
$ kill -HUP sshdのプロセスID
プロセスIDは
$ ps aux | grep sshd
で調べられる。

設定および鍵の作成

設定ファイルは/etc/ssh/sshd_configである(同じディレクトリにssh_configがあるので注意。こちらはsshクライアントの設定ファイル)。

# 必要ならポート番号を変更する。
Port xxxx

# ssh2でのみ接続を許可する。
#Protocol 2,1
Protocol 2

# syslogの設定
SyslogFacility AUTH
LogLevel INFO

#Rootでのログインを禁止
PermitRootLogin no

#ログイン試行回数は最大1回
MaxAuthTries 1

# 10秒以内にログインしないと、サーバは接続を切る。
LoginGraceTime 10

#ログイン前にユーザホームディレクトリの所有権とパーミッションをチェックする。
StrictModes yes

# ssh2のRSA認証を行う
#RSAAuthentication はssh1用
PubkeyAuthentication yes

# ~/.ssh/authorized_keysに公開鍵たちがある。
AuthorizedKeyFile  .ssh/authorized_keys

#空パスワードでのログインは許可しない
PermitEmptyPasswords no

#RSA認証のとき、rhostsを使った認証を許可しない
RhostsRSAAuthentication no

#ホストベースト認証を許可しない。
HostbasedAuthentication no

#チャレンジレスポンス認証を許可しない。
ChallengeResponseAuthentication no

#パスワードによる認証を許可しない
PasswordAuthentication no

UsePAM no

# X11Forwardingを許可しない
X11Forwarding no

# hogeという(サーバ上の)アカウントにだけ接続を許可する。
AllowUsers hoge

次に鍵を作成する。この作業はサーバ上での作業とする(ssh接続先のアカウントでの作業)。

$ ssh-keygen -t rsa
引き続くいくつかの質問に答えると、公開鍵(id_rsa.pub)と秘密鍵(id_rsa)が生成される。

公開鍵の中身を別のファイルに移して、削除する。

$ cat id_rsa.pub >>~/.ssh/authorized_keys
$ rm id_rsa.pub
最終的に秘密鍵id_rsaは、安全な方法でクライアントPCに移す。例えば、フロッピーディスク など物理的な手段でデータを移すなど。

クライアント側PCでの設定

上で生成された秘密鍵は~/.sshに格納される。 sshでリモートマシンに接続するには、

$ ssh hoge@xxx.net
として、xxx.netのhogeというアカウントでログインする。 このように、サーバ上で秘密鍵と公開鍵のペアを作成して、公開鍵はサーバ上に置き、秘密鍵はクライアント側PCに置いた。もちろん鍵ペアは、クライアント側PCで作成しても同じである(最終的に、秘密鍵をクライアント側PCに置き、公開鍵をサーバ側PCに置いておけば)。

セキュリティの設定(Tcp wrappersを用いたアクセス制限)

ログイン経路を/etc/hosts.denyと/etc/hosts.allowによって制限します。 まず、/etc/hosts.denyですべてのログインを拒否しておきます。

#
# hosts.deny This file describes the names of the hosts which are
# *not* allowed to use the local INET services, as decided
# by the '/usr/sbin/tcpd' server.
#
# See man hosts_access(5) for more information.
ALL: ALL

次に、/etc/hosts.allowで許可するログインを設定します。

#
# hosts.allow This file describes the names of the hosts which are
# allowed to use the local INET services, as decided
# by the '/usr/sbin/tcpd' server.
#
# See man hosts_access(5) for more information

ALL : 127.0.0.1
ALL : 192.168.1.1
ALL : 192.168.0.
まず1行目で、ローカルホスト(127.0.0.1)に許可を与えます。 2行目で、もしあれば特定のホスト(ここでは、例のため192.168.1.1)に許可を与えます。 3行目で、もしあれば特定のネットワークに所属するホスト(ここでは、例のため192.168.0.1 - 192.168.0.254)に許可を与えます。また、ホスト名などで許可を与えることもできます。

参考サイト

追記:「SSHのセキュリティを高めるためのハウツー@SourceForge.jp」が参考になる。

0 コメント:

キーワード

キーワード別に記事を分類してあります。クリックすると各キーワードに該当する記事たちが表示されます。

筆者について

自分の写真
趣味はコンピュータ、音楽、写真などです。