私は、SSHアクセスを管理するための次のセットアップが好きです。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を再起動することを忘れないでください)
説明
だから、これはすべて何をしますか?
- 追加のセキュリティ対策として、rootログインを常に無効にします。
- パスワードベースのログインは常に無効になります(sshdを実行しているサーバーにとって弱いパスワードは大きなリスクです)。
allowssh
グループ内のユーザーにのみ(pubkey)ログインを許可します。
sftponly
グループ内のユーザーは、SFTPのみでSSHを介してシェルを取得できません。
グループメンバシップを管理することで、誰がアクセスできるかを簡単に管理できます(これらの変更はすぐに有効になり、SSHの再起動は不要です)。
# adduser marcelm allowssh
# members allowssh
marcelm
# deluser marcelm allowssh
# members allowssh
#
sftpユーザーは、sftponly
(シェルを取得しないようにするため)とallowssh
(最初にログインできるようにするため)の両方のメンバーである必要があることに注意してください。
さらに詳しい情報
この構成ではパスワードによるログインが許可されないことに注意してください。すべてのアカウントは公開鍵認証を使用する必要があります。これはおそらく、SSHで得られる最大のセキュリティ上の勝利の1つであるため、今すぐ開始しなければならない場合でも、努力する価値があると考えています。
これが本当に必要ない場合はPasswordAuthentication yes
、Match Group allowssh
スタンザにも追加してください。これにより、allowssh
ユーザーにpubkeyとパスワードの両方の認証が許可されます。
この構成では、すべてのsftponly
ユーザーがホームディレクトリに制限されます。不要な場合は、ChrootDirectory %h
ディレクティブを削除してください。
chrootingを機能させたい場合は、ユーザーのホームディレクトリ(およびその上の任意のディレクトリ)がroot:root
group / otherによって所有され、書き込み可能ではないことが重要です。ホームディレクトリのサブディレクトリがユーザー所有または書き込み可能であってもかまいません。
はい、ユーザーのホームディレクトリはルート所有者であり、ユーザーが書き込みできない必要があります。残念ながら、この制限には十分な理由があります。状況に応じてChrootDirectory /home
、適切な代替手段になる場合があります。
sftponly
ユーザーのシェルをに設定すること/sbin/nologin
は、SSH ForceCommand internal-sftp
がユーザーのシェルをオーバーライドするため、このソリューションにとって必要でも有害でもありません。
/sbin/nologin
ただし、他の方法(物理コンソール、sambaなど)からのログインを停止するには、を使用すると役立つ場合があります。
このセットアップではroot
、SSH経由の直接ログインは許可されません。これにより、セキュリティがさらに強化されます。あなたが本当に場合か、直接rootログインを必要とする、変更PermitRootLogin
指示を。それを設定することを検討forced-commands-only
、prohibit-password
および(最後の手段として)yes
。
ボーナスポイントについては、誰がsu
ルートできるかを制限することを検討してください。というシステムグループwheel
を追加し、で追加/有効にauth required pam_wheel.so
し/etc/pam.d/su
ます。