自分が設定したホームディレクトリにファイルをアップロードするユーザーグループがあります。私は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)のユーザーだけがログインできます。- グループのユーザーは
sftponly
SSHを介してシェルを取得できず、SFTPを介してのみ取得できます。
次に、グループメンバーシップを管理して、アクセス権を持つ人を管理します。グループメンバーシップの変更は、SSHを再起動しなくてもすぐに適用されますが、既存のセッションは影響を受けません。members allowssh
SSHを介してログインを許可されているすべてのユーザーが表示され、members sftponly
SFTP専用ユーザーもすべて表示されます。
# adduser marcelm allowssh
# members allowssh
marcelm
# deluser marcelm allowssh
# members allowssh
#
sftponly
sftpユーザーは(シェルを取得しないように)、allowssh
(最初からログインを許可するために)両方のメンバーである必要があります。
追加情報
この設定を参照してくださいパスワードログインは許可されていません;すべてのアカウント必要公開鍵認証を使用します。これはおそらくSSHを通じて得ることができる最大のセキュリティ上の利点なので、今始めてもそれほど価値があると思います。
PasswordAuthentication yes
本当に望まない場合は、そのMatch Group allowssh
セクションに追加することもできます。これによりallowssh
、ユーザーは公開鍵とパスワードを使用して認証できます。別のグループ(およびMatch Group
セクション)を追加して、ユーザーにパスワードベースのログイン権限を選択的に付与することもできます。この構成は、
sftponly
すべてのユーザーをホームディレクトリに制限します。これを望まない場合は、ディレクティブを削除してくださいChrootDirectory %h
。もしあなたならするchrootが機能するには、ユーザーのホームディレクトリ(およびその上のすべてのディレクトリ)
root:root
がgroup / otherの所有で書き込み不可能であることが重要です。ホームディレクトリのサブディレクトリは、ユーザーが所有または書き込みできます。うん、ユーザーのホームディレクトリはルートが所有する必要があります。ユーザーが書き込めません。残念ながら良い理由この制限について。状況によっては、
ChrootDirectory /home
これが良い選択かもしれません。このソリューションでは、SSHはユーザーのシェルを上書きするため、ユーザーのシェル設定は不要で有害
sftponly
で/sbin/nologin
はありませんForceCommand internal-sftp
。を使用すると、
/sbin/nologin
他の手段(物理コンソール、Sambaなど)を介してログインするのを防ぐのに役立ちます。この設定はSSHを介した直接ログインを許可せず、
root
これにより追加のセキュリティ層が作成されます。もしあなたが本当にする直接ルートログインが必要な場合は、キーベースの強制コマンドのみを許可するようにPermitRootLogin
ディレクティブを変更します。最後の手段として、フルキーベースのログイン許可を使用できます。避けてください。forced-commands-only
/root/.ssh/authorized_keys
prohibit-password
yes
ボーナスポイントを獲得するには、rootできる人を制限し、という
su
システムグループを追加/有効にすることを検討してください。wheel
auth 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
のみを制限するために使用されます。