oracle
Linuxでは、一般ユーザー(たとえば)への直接ログインを無効にし、その目的で許可してscp
使用sftp
できますか?
答え1
ファイルの作成/etc/nologin
、アカウントログインシェルの設定、または対話型シェルにログインするユーザーアカウントを効果的に/bin/false
無効にするなどの方法は、システムを保護しません。/sbin/nologin
scp
ユーザーがまたはのみを使用するように明示的に制限するには、sftp
このタスクを実行するように特別に設計された制限付きシェルをインストールします。このrssh
パッケージは、OpenSSHで使用するように設計された限定シェルです。
: rssh is a restricted shell for use with OpenSSH, allowing only scp
: and/or sftp. For example, if you have a server which you only want
: to allow users to copy files off of via scp, without providing shell
: access, you can use rssh to do that. It is a alternative to scponly.
chroot
制限されたシェルを使用してログインするユーザーの場合は、設定を真剣に検討する必要がありますrssh
。
このようにユーザーを制限することがセキュリティに与える影響を読んで理解してください。とページから始めてくださいman
。あなたも知っておくべきことは何ですかrssh
rssh.conf
chroot
それが何であるか、どのように機能するのか。
答え2
sshd_configに以下を追加できます。
Match User oracle
ForceCommand set - ""$SSH_ORIGINAL_COMMAND; [ "$1" = "scp" ] || exit 1; CMD=`IFS='\`&;<>'; set - ""$SSH_ORIGINAL_COMMAND; echo $1`; [ "$CMD" ] || exit 1; exec $CMD
ここではユーザー「oracle」と一致します。代わりに、Match group scponly
グループ "sconly"のユーザーを一致させるために使用できます。誰かがscpを実行せずに接続しようとすると、コード1で自動的に終了します。
アカウントがキーベース認証を使用している場合は、ユーザーの.ssh / authorized_keysファイルにキーを追加できますcommand="<above commands>"
。
ファイル操作によって文字が切り捨てられた悪意のあるコマンドが実行されるのを防ぐために、いくつかの安全装置を追加しましたが&``;<>
、この問題が私が思わぬ方法で解決できるかどうかはわかりません。
sshd_configファイルに貼り付けるのは少し長くて混乱します。 "scp"をチェックするスクリプトを作成し、ForceCommandでそのスクリプトを呼び出してモードをsshd_config
簡単にする方が良いでしょう。確認するhttps://serverfault.com/questions/749474/ssh-authorized-keys-command-option-multiple-commandsこれはいくつかの例です。
答え3
はい、可能です。
- たとえば
chsh -s /bin/false ${user}
。 sshd
内部を使うように言った。sftp-server
Match User ${user} ForceCommand internal-sftp
Match
ブロックは次のMatch
ブロックまたはファイルの終わりまで続きます(インデントは人にのみ適用されます)、ファイルの最後にこの設定を追加するのが最も簡単です。
(${user}
希望のユーザー名に変更してください。)
9.0より前のクライアントはこの設定ssh
のみを使用できます。sftp
9.0バージョン以降、内部的にプロトコルを使用するようにscp
変更され、再び機能します。sftp
答え4
ログインシェルを通常のログインに変更またはbash
禁止/usr/sbin/nologin
できます/bin/false
。ログインシェルは、次のコマンドを使用して変更できますusermod
。
usermod user_name -s /usr/sbin/nologin