自分のホームディレクトリにファイルをアップロードするだけのユーザーがたくさんいます。 sftpで十分だと思いますが、Shell経由でログインしたくありません。それは可能ですか?私のプラットフォームはcentos 7で、ユーザーのホームディレクトリが保存されています/ personal/$ userと言います
これらの設定でユーザーを作成しました
useradd -m -d /personal/user1 -s /sbin/nologin
ユーザーにpasswdを割り当てた後、sftpを使用してマシンにログインすると、接続できないと表示されます。
/etc/ssh/sshd_config
含有すること:
Match User [SFTP user]
ForceCommand internal-sftp
sshd
を再起動します。複数のユーザーがいる場合は、すべてを次のようにカンマで区切ってマッチユーザー行に配置します。
Match User User1,User2,User3
シェルアクセスを許可しないようにsftp
を構成するための鍵は、ForceCommand
オプションを使用してユーザーを制限することです。
私は、SSHアクセスを管理するための次のセットアップが好きです。これは、小さなサーバー群でユーザーのグループを管理するために職場で使用しています。セキュリティと管理の容易さは、私の優先事項のリストの上位にあります。
その主要な機能は、Unixグループメンバーシップを介してSSH権限を簡単に管理し、厳密に定義されたアクセス許可を持ち、デフォルトで安全です。
ソフトウェアをインストールします(オプションですが便利です):
yum install members # or apt install members
グループを追加:
addgroup --system allowssh
addgroup --system sftponly
/etc/ssh/sshd_config
で、次の設定がNo
であることを確認します。
PermitRootLogin no
PubkeyAuthentication no
PasswordAuthentication no
/etc/ssh/sshd_config
の最後に、次の2つのスタンザを追加します。
Match Group allowssh
PubkeyAuthentication yes
Match Group sftponly
ChrootDirectory %h
X11Forwarding no
AllowTcpForwarding no
ForceCommand internal-sftp
(ファイルの編集後にSSHを再起動することを忘れないでください)
それで、これは何をするのですか?
allowssh
グループのユーザーにのみ(pubkey)ログインを許可します。sftponly
グループのユーザーは、SSH経由でシェルを取得できません。SFTPのみを取得できます。アクセス権を持つユーザーの管理は、グループメンバーシップを管理することで簡単に行えます(これらの変更はすぐに有効になり、SSHの再起動は必要ありません)。
# adduser marcelm allowssh
# members allowssh
marcelm
# deluser marcelm allowssh
# members allowssh
#
Sftpユーザーは、sftponly
(シェルを取得しないようにするため)とallowssh
(最初からログインを許可するため)の両方のメンバーである必要があることに注意してください。
この構成ではパスワードによるログインは許可されないことに注意してください;すべてのアカウントは、公開鍵認証を使用する必要があります。これはおそらくSSHで得られる単一の最大のセキュリティ上の勝利であるため、今すぐ始めなければならない場合でも、努力する価値はあると思います。
これが本当に不要な場合は、PasswordAuthentication yes
スタンザにMatch Group allowssh
も追加します。これにより、allowssh
ユーザーに対してpubkeyとパスワードの両方の認証が許可されます。
この構成では、すべてのsftponly
ユーザーをホームディレクトリに制限します。それが必要ない場合は、ChrootDirectory %h
ディレクティブを削除してください。
doでchrootを機能させたい場合は、ユーザーのホームディレクトリ(およびその上のディレクトリ)がroot:root
によって所有され、グループやその他のユーザーが書き込みできないことが重要です。 。ホームディレクトリのサブディレクトリがユーザー所有または書き込み可能であっても問題ありません。
はい、ユーザーのホームディレクトリはルート所有であり、ユーザーに書き込み不可である必要があります。残念ながら、この制限には 正当な理由 があります。状況によっては、ChrootDirectory /home
が適切な代替手段になる場合があります。
sftponly
ユーザーのシェルを/sbin/nologin
に設定することは、SSHのForceCommand internal-sftp
がユーザーのシェルを上書きするため、このソリューションでは不要であり有害でもありません。
/sbin/nologin
を使用すると、他の方法(物理コンソール、Sambaなど)でのログインを停止するのに役立ちます。
この設定では、SSH経由での直接root
ログインは許可されていません。これにより、セキュリティがさらに強化されます。本当にdo直接rootログインが必要な場合は、PermitRootLogin
ディレクティブを変更してください。 forced-commands-only
、prohibit-password
、および(最後の手段として)yes
に設定することを検討してください。
ボーナスポイントについては、誰がsu
をrootにできるかを制限することを見てください。 wheel
というシステムグループを追加し、auth required pam_wheel.so
に/etc/pam.d/su
を追加/有効化します。
デフォルトのシェルを/ sbin/nologinに変更するだけです。ほとんどの種類のLinuxを想定:
# usermod -s /sbin/nologin username
tftpを使用できます。 sshを超えるものは、何らかの認証(key | pass)を必要とします。
tftpは保護できますが、認証なしで何かへのアクセスを提供するという決定を再検討する価値があるかもしれません。