私の考えでは:
/home/friend
サーバー上の友達のディレクトリへのSFTPアクセスを提供する- 彼にApacheを含む仮想ホストを提供してください。
/home/friend/www/
- その人が同様のディレクトリにアクセスすることを許可せず
/etc/
(現在解決済み)、その人が自分の家にアクセスすることを許可しない/home/me
(まだ解決されていません)
これを行うには:
私が作る
adduser friend
彼のためにApache VirtualHostを追加しました。
<VirtualHost *:80> ServerName hiswebsite.com DocumentRoot /home/friend/www ... </VirtualHost>
そして
service apache2 restart
。SFTP/SSH アクセスを「刑務所」にしました。
PermitRootLogin yes ChallengeResponseAuthentication no UsePAM yes X11Forwarding yes PrintMotd no AcceptEnv LANG LC_* PasswordAuthentication yes GatewayPorts yes Subsystem sftp internal-sftp Match User friend ChrootDirectory /home/ ForceCommand internal-sftp
そして
service sshd restart
。
質問:
friend
今は出られませんが/home/
(大丈夫です)その人はまだ行けます。/home/me/
そして中のファイルを読んでください!彼にアクセス権だけを与え/home/friend/
、他の権限を与えない方法は何ですか?これは、次の理由で不可能に見えます。ChrootDirectoryは、
認証後のchroot(2)のディレクトリパス名を指定します。 パス名のすべてのコンポーネントは、ルートが所有するディレクトリでなければなりません。他のユーザーやグループは書き込めません。私がしなければならない
friend
グループにユーザーを追加しますかwww-data
?- または
www-data
グループにユーザーを追加しますかfriend
? それとも別のユーザー/グループ設定ですか?
Apacheがファイルを提供し、PHP書き込みアクセスを許可することを許可しますか
/home/friend/www/
?彼のウェブサイトにファイルアップローダがあるとしましょう。 PHPはこのディレクトリにファイルを作成する必要があります。とには/home/friend
どのような権限が与えられますか/home/me
?
リンクトピック:
答え1
現状
このセクションの警告はあなたの場合にのみ推奨されますのみ使用Webホスティングなので、Apacheはホームユーザーのフォルダへのアクセス権を意味しません(答えの末尾にある他の提案がより適切かもしれません)。
- Web / Apacheグループには、
www-data
サービスを使用するすべてのユーザーを含める必要があります。 - Apacheとユーザーは、互いへのアクセス
www
を制限しながら、互いへのアクセスが必要です。- その下の各ディレクトリには権限が
/home
必要です。www-data:user
- その下の各ディレクトリには権限が
chown www-data:me /home/me
または
- Web / Apacheグループには、
www-data
サービスを使用するすべてのユーザーを含める必要があります。 - Apacheとユーザーは、互いへのアクセス
www
を制限しながら、互いへのアクセスが必要です。- ホームユーザーのフォルダには権限が必要です。
chown me:me /home/me
/home
Apacheに属するchown www-data:root /home
- ホームユーザーのフォルダには権限が必要です。
これにより、Apacheは必要なディレクトリにアクセスでき、www
ユーザーは他のユーザーフォルダにアクセスできなくなります。
ここで重要なのは、グループ権限がユーザー間で共有され、Apache自体が他のユーザーに公開されないユーザーであることです。たとえば、Apacheと私にアクセスを許可すると、chown www:me /home/me
他のユーザーから隔離されたままになります(そしてwwwグループの誰もがアクセスを許可されます)。ファイルクリップ))me
chown me:www /home/me
me
ディレクトリは、現在の設定でapache(ユーザー)に属する場所www
に存在する必要があるか、ユーザーディレクトリ内にあるため、回避策です。www-data
/home/me
www-data:me
/home
www-data:root
www
そのため、デフォルトの場所はホームディレクトリではなくホームディレクトリにwww
あります。これは、Apacheに不要なアクセス権(たとえば、ユーザーフォルダ全体へのアクセス権など)を付与せずに、Apacheとユーザーがw / rを許可できるようにするためです。/var
www
ホームフォルダが次の場合ただ(Webを使用)現在の提案/構成に満足していることを意味します。www
Webホスティング以外の目的でこのシステムを使用している場合は、フォルダ以外の場所に配置する必要www
があります。ユースケースを削除し、ファイルアクセスをファイルアクセス権によってのみ管理されているクラシック構成に移動するには、/home
/var
ChrootDirectory
これはクラシックユーザーの制限事項の一部を読む...
セキュリティ、分離、Webホスティング、他のLinux/サーバーで使用各ユーザーにさまざまなソリューションを実装し、仮想化および/またはサンドボックスを開発する必要があります。
あなたが要求したことを達成する他の可能性はたくさんありますが、あなたの構成についてはこれが最速です。リソースセクションをお読みください。最終推奨事項以下はより適切な実装です。
構成
実装は、ターゲットのセキュリティレベルとターゲットの用途によって異なります。したがって、ある構成はある状況には適していますが、同時に他の状況には不適切かもしれません。
ChrootDirectory
現在の設定は、各SSHユーザー間の分離を管理するためにクラシックファイル権限の代わりにグループとユーザーアクセスレベルを使用するクラシック構成とは大きく異なりません。これを達成するための構成では、ユーザーアクセスレベルが欠落しているようです。実装方法の詳細は次のとおりです。ここ、ここそしてここ(つまり、ChrootDirectory
他の方法で使用するのは良いセキュリティ慣行です)
代替(強化されたセキュリティ)
PermitRootLogin yes
First を使用しないで、代わりにme
suders にユーザーを追加します。その後、me
ユーザーは以下を使用してsudo su
ルートディレクトリにアクセスできます。su
セキュリティを強化することが目標であれば、user space
各ユーザーを完全に分離するカーネル機能を使用できますが、これはまったく異なる構成です。これは基本的なLinuxツールおよび/または火災刑務所別のファイル/ネットワークなど
さらに、セキュリティ強化と同じ範囲内で認証に秘密鍵/公開鍵を使用する代わりに、秘密鍵/公開鍵を使用する必要があります。PasswordAuthentication yes
SSHFSホストされたファイルを分離する代わりに使用することもできます。
トピックへのより興味深いリンクは次のとおりです。
最終推奨事項
最後に、構成に関して提案したいこと
- 障害を負う
PermitRootLogin
- ユーザーと
/home
権限を確認します。 - の場合ユニークWebホスティング使用量
/home
ディレクトリではなく、提案された権限を適用して/var/apache/user1,user2,etc
から。ChrootDirectory /var/apache/
- 多目的システムの場合
- ここではいくつかの可能性があります。そのうちの1つは、
/home
ディレクトリに対するものではなく、同様の構造を使用して提案された権限を適用することです。/var/apache/user1,user2,etc
いいえ次に、ファイルアクセス権を使用してChrootDirectory
権限を管理します。
- ここではいくつかの可能性があります。そのうちの1つは、
答え2
これ記事優れたシンプルなソリューションを提供します。
ルートが所有するディレクトリを作成し、それをユーザーのホームに
/friends/
します。/friends/alice/
alice
usermod -m -d /friends/alice alice
最後にこれを追加します
/etc/ssh/sshd_config
。Subsystem sftp internal-sftp Match User alice ChrootDirectory /friends
それから
/etc/init.d/ssh restart
複数のユーザーを同じディレクトリに chroot しても、そのユーザーが別のユーザーのホームディレクトリを参照したくない場合は、次のように各ホームディレクトリの権限を変更できます。例:
chmod 700 /home/alice
唯一の欠点:このソリューションでは、Apacheは次の内容を読むことができません
/home/alice/www
。