デーモンツールズ経由でのsshd監視と自動起動設定

本ガイドはサポート対象外の説明を含む内容となります。
参考情報としてお読みいただき、お客様のご判断でご利用ください。
※尚、ご自身での設定が難しいという方に、有料にて設定の代行を承っております。
こちらをご参照ください。 設定代行メニュー

EX-SCALE、EX-DBのサーバにはデーモンツールズ(DJB氏によって開発されたUnix系OS用のサービス管理ツール)がインストールされています。

STEP 1sshd用ディレクトリと起動スクリプトの作成

rootに昇格し、sshdの設定項目や起動スクリプトを保管するディレクトリを作成します。
本例では/home/sshdというディレクトリ以下に保存する設定とします。

# mkdir /home/sshd

# vi /home/sshd/run
▼以下ファイルの中身 (8行)▼
#!/bin/sh

PATH="/usr/local/bin:$PATH"

tcprules tcp.ssh.cdb tcp.ssh.tmp < tcp.ssh

exec env - PATH="$PATH" \ 
tcpserver -HRDl0 -x tcp.ssh.cdb 0 22 sshd -4ie -f /etc/ssh/sshd_config 2>&1

# chmod +x /home/sshd/run

STEP 2アクセス制限用のcdbファイルの作成

sshdアクセス制御時に読み込まれるルールファイルは
tcp.ssh.cdb』ですがこのファイルは直接編集はできません。

起動スクリプトを実行する際に、スクリプト内の
tcprules tcp.ssh.cdb tcp.ssh.tmp < tcp.ssh』という行で「tcp.ssh.cdb」というファイルを作成しますが、
その データのもととなるのが「tcp.ssh」という事前に作成したテキストファイルです。

このステップでは「tcp.ssh」ファイルを作成しますので、sshdのアクセス元となるIPアドレスについて事前に確認ください。
>サーバへ接続するときの自分のネットワークのIPアドレスがわかりません。

以下は「123.45.67.89」というIPアドレスからのsshd接続も許可する設定の例ですのでご自身の環境に置き換えてご設定ください。

#vi /home/sshd/tcp.ssh
▼以下設定例です。▼
127.0.0.1:allow
123.45.67.89:allow
10.:allow
172.16-31.:allow
192.168.:allow
:deny

“:allow”で終わる許可設定の行の後、最後”:deny”の行で終わっています。「あらかじめ宣言していないネットワーク以外からのアクセスは拒否」という設定となります。

STEP 3daemontools経由のsshdの起動と動作確認

 # cd /service
 # ln -s /home/sshd sshd
 # /usr/local/bin/svstat /service/sshd
 ▼既存のsshdが立ち上がっているため以下のようなメッセージが出ます
【例1】
/service/sshd: unable to open supervise/ok: file does not exist
【例2】何度実行しても0秒から数秒しか起動していないというメッセージ
/service/sshd: up (pid XXXX) 0 seconds

既存のsshdを停止してdaemontools経由でsshdが起動されるかを確認します。

【注意】
立ち上がっているsshdを停止した後でも現在接続中のターミナルは使用出来ますので、接続不可能になった場合の設定修正のため、切断しないようご注意ください。

 # /etc/init.d/sshd stop
▼15秒程度待ってから以下を実行しsshdの起動ステータスを確認します▼
 # /usr/local/bin/svstat /service/sshd
 /service/sshd: up (pid XXXX) 11 seconds
⇒プロセスが起動し続けている秒数が確認できます。10秒以上起動しつづけていることを確認ください。

STEP 4chkconfig設定の変更

既存のsshdの初期起動を停止します。

# /sbin/chkconfig --list sshd
sshd        0:off   1:off   2:on    3:on    4:on    5:on    6:off
⇒onという表記がいくつか確認できます
# /sbin/chkconfig sshd off
# /sbin/chkconfig --list sshd
sshd        0:off   1:off   2:off    3:off   4:off   5:off   6:off
⇒すべてoffになっています

STEP 5アクセス制限や疎通の確認

業が終わりましたら作業中のターミナル設定を閉じずに、外部からの接続確認を必ず行ってからログアウトするようにしてください。接続できなかった場合はアクセス制限の調整等をおこなうようにしてください。

付録

付録1プロセス管理コマンドの利用方法

デーモンツールズのサービス監視コマンドでよく使われるものには、svstat・svc・tcprules・tcpruleschek等があります。
/usr/local/bin以下にインストールされています。

# PATH=$PATH:/usr/local/bin

⇒関連コマンドのPATHを通しておきます。
※ログインシェルによって指定の仕方が異なります。bashでの例です。

svcというコマンドでは監視中のプロセスを停止させる、起動させることが可能です。
ただし、デーモンツールズで監視することに決めたサービス自体は基本的にはサービスを起動し続けることを前提としていますので作業終了後には、svstatコマンドでサービスが起動していること確認するようにしてください。

# svc -d /service/sshd 
⇒sshdのプロセスを明示的に落とす(オプションの「d」は「down(停止)」の意)

# svstat /service/sshd 
/service/sshd/: down ●● seconds, normally up
⇒プロセスが停止している秒数を確認

# svc -u /service/sshd 
⇒意図的に停止していたsshdのプロセスを起動する(オプションの「u」は「up(起動)」の意)

# svstat /service/sshd 
/service/sshd/: up (pid XXXX) ●● seconds
⇒プロセスが起動している秒数を確認

sshdのアクセス制御のルールファイルのみを更新する場合は、/home/sshd/tcp.ssh.cdb を更新すれば特にsshdの再起動は必要ありません。
次項をご参照ください。

付録2アクセス制御『.cdbファイル』の更新方法

ガイド本文内の方法では、sshはアクセス制御用にcdbファイル(/home/sshd/tcp.ssh.cdb)を読み込んで起動しています、

すでにsshdを起動中にアクセス制限のルールを変更を行いたい場合は、以下のようにcdbファイルの更新をしてください
/home/sshd/tcp.ssh ファイルをvi等で編集
『tcprules tcp.ssh.cdb tcp.ssh.tmp < tcp.ssh』で 「tcp.ssh.cdb」というファイルを再生成 設定反映を確認 既存の設定に加え、「123.123.123.0/24からのアクセスも追加したい」という場合は以下のように作業を行います。

# PATH=$PATH:/usr/local/bin

⇒関連コマンドのPATHを通す。

# cd /home/sshd 
# pwd 
/home/sshd

#vi /home/sshd/tcp.ssh
▼以下設定例です。二番上の行を追加▼
127.0.0.1:allow
123.123.123.:allow
123.45.67.89:allow
10.:allow
172.16-31.:allow
192.168.:allow
:deny

⇒123.123.123.0/24への許可設定は
「123.123.123.0-255:allow」あるいは「123.123.123.:allow」等で指定が可能です。

# tcprules tcp.ssh.cdb tcp.ssh.tmp < tcp.ssh

# ls -l
-rwxr-xr-x 1 root root  nnn Jan 1 00:00 run
drwx------ 2 root root nnn Jan 1 00:00 supervise
-rw-r--r-- 1 root root  nnn Jan 1 11:00 tcp.ssh
-rw-r--r-- 1 root root nnn Jan 1 11:11 tcp.ssh.cdb
⇒tcp.ssh.cdbファイルの更新が新しい日付になっていることを確認

# TCPREMOTEIP=123.123.123.50 tcprulescheck tcp.ssh.cdb
rule 123.123.123.:
allow connection

⇒上記bashでの実行例です。
123.123.123.50への許可、拒否が「tcp.ssh.cdb」ではどう設定されているかチェックし「123.123.123.:allow」というルール行で許可されていると結果が出ています。

上記ではコマンドでの確認を案内しておりますが、 実際に対象サーバへsshdアクセスを確認いただき、アクセス制御の状態を確認いただくのがもっとも確実です。