- PR -

ssh経由でのリモートコマンドを拒否したいのですが

1
投稿者投稿内容
penguin
会議室デビュー日: 2008/05/17
投稿数: 3
投稿日時: 2008-05-17 14:50
初めて投稿します。よろしくお願いします。

内部ネットワークのファイヤーウォールに使っている
マシンのsshの設定に関して質問があります。

クライアントがssh経由で外部から送ってきた
リモートコマンドを拒否する方法がどうしても
わかりません。

サーバーのOSは
OS - RHEL 4
(sshd: OepnSSH 3.9p1)
です。

よろしくお願いします。
末記人
大ベテラン
会議室デビュー日: 2005/12/05
投稿数: 233
お住まい・勤務地: あわにこ
投稿日時: 2008-05-17 15:25
こんにちは

何をしたいのでしょうか?
ssh接続したら、普通にシェルコマンドが使えますが...

シェルコマンドを使わせたくないなら
chrootとか scponlyでググってみては?
penguin
会議室デビュー日: 2008/05/17
投稿数: 3
投稿日時: 2008-05-17 16:05
コメントありがとうございます。
言葉足らずで申し訳ありません。

目的は、ファイヤーウォール(HOST_A)にしているマシン
に対して、クライアントが"手動"でログインして
いるかどうかを確認するためです。具体的には、
クライアントがcron等を使って外部マシンから
定期的にHOST_Aへログインし、シェルコマンドを
実行させないようにするためです。

私が調べた範囲(といっても限られていますが)では
最も簡単そうなのがクライアントが外部マシンから
ssh接続する際、

]$ ssh USER@HOST_A Command

で指定されたCommandを無効にすることだと思ったのですが
どこをいじれば無効になるのかがわかりませんでした。

お教えいただいたchrootの方で対処できないかもう少し
調べてみます。
angel
ぬし
会議室デビュー日: 2005/03/17
投稿数: 711
投稿日時: 2008-05-18 22:07
こんばんは。

手動でログインして、シェル経由でコマンド実行するのはO.K.だけど、自動ログイン+コマンド実行がN.G.と。
正直あまり意味があるとは思えません。いえ、制限を加えることで、ユーザが諦めるかも、という意味はあるかもしれませんけど。

何しろ、

 remotehost$ ssh user@host_a command
 ※遠隔からのコマンド実行

と、

 remotehost$ echo command | ssh user@host_a
 ※遠隔からのログインに一工夫

って似たような結果になりますからね。
人手でコマンドが入力されたか、機械が自動でコマンドを発行しているかどうか、なんて見分けるのは無理があります。
※端末デバイスを通して行う、対話型のコマンド入力をシミュレートできる expect なんてのもあるのですから。

「$ ssh USER@HOST_A Command で指定されたCommandを無効にする」ということだけであれば、サーバ設定の ForceCommand というので似たようなことができそうです。
詳しくは、sshd_conig(5)を参考に。
とはいえ、OpenSSH4.4から追加された機能なので、3.9p1ではダメでしょうけど。
penguin
会議室デビュー日: 2008/05/17
投稿数: 3
投稿日時: 2008-05-19 12:05
ご教授ありがとうございました。

opensshを5.0p1にバージョンアップし
sshd_configの設定でForce_commandオプションで
を利用すると

$ssh USER@HOST_A Command

で指定されたコマンドを無視させることができました。

とりあえず機械か人手かの区別はつけられませんがCommandは
無視されるようになりました。これでしばらく様子を見てみます。

みなさま、ありがとうございました。


1

スキルアップ/キャリアアップ(JOB@IT)