シェルアクセスなしでユーザーにSFTPアクセスを許可できますか?それでは、どのように実装されますか?

シェルアクセスなしでユーザーにSFTPアクセスを許可できますか?それでは、どのように実装されますか?

自分が設定したホームディレクトリにファイルをアップロードするユーザーグループがあります。私はsftpで十分だろうと思いますが、シェルを介してログインしたくありません。それでは可能ですか?私のプラットフォームはcentos 7で、ユーザーのホームディレクトリは/personal/$userに保存されています。

この設定でユーザーを作成しました。

useradd -m -d /personal/user1 -s /sbin/nologin

ユーザーにパスワードが割り当てられた後、sftpを使用してシステムにログインすると接続できないというメッセージが表示されます。

答え1

グループベースのデフォルトセキュリティSSH設定

私はSSHアクセスを管理するために次の設定が好きで、それを使用して小規模なサーバーファームでユーザーグループを管理しました。セキュリティと管理の容易さが最優先事項です。

主な機能は、Unixグループのメンバーシップを通じてSSH権限を簡単に管理することであり、厳密に定義された権限を持ち、デフォルトで安全です。

構成

ソフトウェアのインストール(オプションですが便利です):

yum install members   # or apt install members

グループを追加:

addgroup --system allowssh
addgroup --system sftponly

次の内容で新しいファイルを追加します(より良い名前に/etc/ssh/sshd_config.d/strict.conf置き換えることができます)。strict

PermitRootLogin no
PubkeyAuthentication no
PasswordAuthentication no

Match Group allowssh
    PubkeyAuthentication yes

Match Group sftponly
    ChrootDirectory %h
    DisableForwarding yes
    ForceCommand internal-sftp

これは、OpenSSH 設定にデフォルトの構成sshd_config.d/*.conf上書きが含まれていると仮定します。 SSH文書を確認するか、mainにsshd_config適切なIncludeディレクティブがあることを確認してください。設定がこの機能をサポートしていない場合は、sshd_config直接編集できます。

また、設定を変更した後にSSHサービスを再起動することを忘れないでください。

基本的な

それでは、これらすべての機能は何をしますか?

  • 追加のセキュリティ対策として、常にrootログインを無効にします。
  • 常にパスワードベースのログインを無効にします(脆弱なパスワードはsshdを実行しているサーバーにとって大きなリスクです)。
  • allowsshグループ(pubkey)のユーザーだけがログインできます。
  • グループのユーザーはsftponlySSHを介してシェルを取得できず、SFTPを介してのみ取得できます。

次に、グループメンバーシップを管理して、アクセス権を持つ人を管理します。グループメンバーシップの変更は、SSHを再起動しなくてもすぐに適用されますが、既存のセッションは影響を受けません。members allowsshSSHを介してログインを許可されているすべてのユーザーが表示され、members sftponlySFTP専用ユーザーもすべて表示されます。

# adduser marcelm allowssh
# members allowssh
marcelm
# deluser marcelm allowssh
# members allowssh
#

sftponlysftpユーザーは(シェルを取得しないように)、allowssh(最初からログインを許可するために)両方のメンバーである必要があります。

追加情報

  1. この設定を参照してくださいパスワードログインは許可されていません;すべてのアカウント必要公開鍵認証を使用します。これはおそらくSSHを通じて得ることができる最大のセキュリティ上の利点なので、今始めてもそれほど価値があると思います。

    PasswordAuthentication yes本当に望まない場合は、そのMatch Group allowsshセクションに追加することもできます。これによりallowssh、ユーザーは公開鍵とパスワードを使用して認証できます。別のグループ(およびMatch Groupセクション)を追加して、ユーザーにパスワードベースのログイン権限を選択的に付与することもできます。

  2. この構成は、sftponlyすべてのユーザーをホームディレクトリに制限します。これを望まない場合は、ディレクティブを削除してくださいChrootDirectory %h

    もしあなたならするchrootが機能するには、ユーザーのホームディレクトリ(およびその上のすべてのディレクトリ)root:rootがgroup / otherの所有で書き込み不可能であることが重要です。ホームディレクトリのサブディレクトリは、ユーザーが所有または書き込みできます。

    うん、ユーザーのホームディレクトリはルートが所有する必要があります。ユーザーが書き込めません。残念ながら良い理由この制限について。状況によっては、ChrootDirectory /homeこれが良い選択かもしれません。

  3. このソリューションでは、SSHはユーザーのシェルを上書きするため、ユーザーのシェル設定は不要で有害sftponly/sbin/nologinはありませんForceCommand internal-sftp

    を使用すると、/sbin/nologin他の手段(物理コンソール、Sambaなど)を介してログインするのを防ぐのに役立ちます。

  4. この設定はSSHを介した直接ログインを許可せず、rootこれにより追加のセキュリティ層が作成されます。もしあなたが本当にする直接ルートログインが必要な場合は、キーベースの強制コマンドのみを許可するようにPermitRootLoginディレクティブを変更します。最後の手段として、フルキーベースのログイン許可を使用できます。避けてください。forced-commands-only/root/.ssh/authorized_keysprohibit-passwordyes

  5. ボーナスポイントを獲得するには、rootできる人を制限し、というsuシステムグループを追加/有効にすることを検討してください。wheelauth required pam_wheel.so/etc/pam.d/su

答え2

/etc/ssh/sshd_config以下を含むようにコンテンツを編集します。

Match User [SFTP user]
ForceCommand internal-sftp

再起動sshd。複数のユーザーがいる場合は、コンマで区切って一致するユーザー行に次のように入力します。

Match User User1,User2,User3

sftpシェルアクセスを許可しないように構成する鍵は、オプションでForceCommand ユーザーを制限することです。

答え3

デフォルトのシェルを/sbin/nologinに変更するだけです。ほとんどのLinuxバージョンを想定すると:

# usermod -s /sbin/nologin username

答え4

持つmysecureshellユーザーがSFTPを使用できないように制限し、アクセス可能なパスも制限できます。

しかもrrsyncユーザーrsyncのみを制限するために使用されます。

関連情報