Bloody Mary  

First Creation : 2006/11/08

Last Update : 2006/11/09

Bloody Mary > Technical Notes > Plamo Linux 覚書 2.1 - sshd

Plamo Linux 覚書 2.1

今回は遠隔で Linux を操作 ( ssh ) するための SSHD 設定を行う。

SSHD を xinetd 経由で立ち上げる

Linux の場合、サービスは Standalone で常時起動しているか、要求があったときだけ xinetd ( 昔使われていた inetd のグレードアップバージョン ) で立ち上げるかを選択することができる。( そういう言い回しが正確かどうかは分からないが )

始め 「 SSHD は Standalone で立ち上げていたほうが、接続時にストレスがなくていいよなぁ」 と思っていたものだが、2006/11 時点で .kr やその他の国からのアクセスがアフォみたいに多くなって来たので、 xinetd でアクセス制限をかけたいと思い始めた。もちろん iptables でパケットフィルタもしていて、ある時間内に何回も ssh されるとその後 REJECT する、という設定にはなっている。しかしホスト ( .kr , .cn , etc.. ) 単位で拒否りたいので、 xinetd を使うことに。

使ってみて分かったのだが、 xinetd 経由で立ち上がっても、接続時のタイムラグはまったく感じられない。というわけで、このページでは xinetd を前提とした sshd の設定を行う。

1. SSHD の自動起動を STOP

Plamo Linux は、/etc/rc.d/rc.inet2 によって自動的に sshd が起動するようになっているので、まずはこれを止める。

# vi /etc/rc.d/rc.inet2
# 23 行目付近をコメントアウト
     22 # SSH server
     23 #SERV="$SERV sshd"
2. sshd デーモン停止
# ps aux | grep sshd         # sshd のプロセスが表示される
# kill sshdのプロセス番号
3. sshd_config の設定
# vi /etc/ssh/sshd_config
# 以下、 sshd_conf で有効になったところを抜粋した。

Protocol 2
PermitRootLogin no

# ssh1
RSAAuthentication no
# ssh2
PubkeyAuthentication yes
#AuthorizedKeysFile .ssh/authorized_keys

# For this to work you will also need host keys in /etc/ssh/ssh_known_hosts
RhostsRSAAuthentication no

# To disable tunneled clear text passwords, change to no here!
PasswordAuthentication no
PermitEmptyPasswords no

UsePAM no

PermitUserEnvironment yes

# override default of no subsystems
Subsystem   sftp    /usr/libexec/sftp-server

赤文字のところは非常に重要なので、このままの設定にすること。設定項目は順不同である。意味合いとしては、次の通り。

  • SSH プロトコルは 2 Only にする。こうしないと、クライアントソフト ( 特に Linux 等からの SSH コマンド ) によっては Protocol1 で接続してしまい、有無を言わさず 「 Permissin Denied. 」のエラーになってしまう。
  • 鍵を使ってセキュリティを高める。 RSA ( SSH1 ) は許可しない。AuthorizedKeysFile はコメントアウトで OK
  • パスワード認証は許可しない
  • 補足として、鍵認証のパスフレーズは、秘密鍵を復号するためのもので、 UNIX ユーザのパスワードとは異なる。 ( 鍵を作るときに指定できる )
  • 空のパスワードは許可しない ( パスワード認証不可なので関係ないが、念のため )
  • PAM 認証を使わない。pam に下手な設定をすると、「鍵でしかログインできない」設定にしても「パスワード認証で」入れてしまうので要注意
  • root の SSH ログインは禁止
4. 鍵の作成

例えば、 Plamo Linux で作業しているユーザを hoge としよう。もし root しかユーザがいないのであれば、一般ユーザの hoge を作成する。

次に、hoge のコマンドラインから鍵を作る。

% ssh-keygen -t rsa -b 1024
# /home/hoge/.ssh にできた id_rsa.pub の名前を変更
% mv ~/.ssh/id_rsa.pub ~/.ssh/authorized_keys
# 読み取られちゃマズいので、自分以外に読み書きされないようにする
% chmod 600 ~/.ssh/authorized_keys

同時に、 /home/hoge/.ssh に id_rsa ( 秘密鍵 ) もあるはずなので、これを FD にコピーしたりして、クライアント PC に保存しなければならない。

クライアント PC に関しては後日ということで割愛させていただく。Linux ( Client ) ⇒ Plamo Linux でよければ、

% ssh hoge.com -i id_rsa (今回移動したファイルを指定) -l hoge ( hoge でログイン) -2 ( Protcol 2 )

これで SSH で接続できるはずだ。( 赤文字はコメントなので入力しないよう )

5. /etc/pam.d/sshd

/etc/pam.d/sshd をどうするかだが、消してしまってもかまわないだろう。後で気が変わってパスワード認証を許可したくなったら使うことになるだろうが、必要になったら以下をコピペして使えばいい。普通の UNIX 認証用なので、環境によっては動かないかもしれないが。

#%PAM-1.0
auth       required     /lib/security/pam_unix.so shadow nodelay
auth       required     /lib/security/pam_nologin.so
account    required     /lib/security/pam_unix.so
password   required     /lib/security/pam_cracklib.so
password   required     /lib/security/pam_unix.so shadow nullok use_authtok
session    required     /lib/security/pam_unix.so
session    required     /lib/security/pam_limits.so

以上で sshd の設定は完了した。次回は xinetd の設定を行う。

前へ上へ次へ