現状

現状

私の考えでは:

  • /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

質問:

  1. friend今は出られませんが/home/(大丈夫です)その人はまだ行けます。/home/me/そして中のファイルを読んでください!彼にアクセス権だけを与え/home/friend/、他の権限を与えない方法は何ですか?これは、次の理由で不可能に見えます。

    ChrootDirectoryは、
    認証後のchroot(2)のディレクトリパス名を指定します。 パス名のすべてのコンポーネントは、ルートが所有するディレクトリでなければなりません。他のユーザーやグループは書き込めません。

  2. 私がしなければならない

    • friendグループにユーザーを追加しますかwww-data
    • またはwww-dataグループにユーザーを追加しますかfriend
    • それとも別のユーザー/グループ設定ですか?

      Apacheがファイルを提供し、PHP書き込みアクセスを許可することを許可しますか/home/friend/www/?彼のウェブサイトにファイルアップローダがあるとしましょう。 PHPはこのディレクトリにファイルを作成する必要があります。とには/home/friendどのような権限が与えられますか/home/me


リンクトピック:

Apache権限を処理する最良の方法は何ですか?

私のウェブサイトのファイル/フォルダには、Linux Webサーバーでどのような権限が必要ですか?

ベストアンサー1

現状

このセクションの警告はあなたの場合にのみ推奨されますのみ使用Webホスティングなので、Apacheはホームユーザーのフォルダへのアクセス権を意味しません(答えの末尾にある他の提案がより適切かもしれません)。


  1. Web / Apacheグループには、www-dataサービスを使用するすべてのユーザーを含める必要があります。
  2. Apacheとユーザーは、互いへのアクセスwwwを制限しながら、互いへのアクセスが必要です。
    • その下の各ディレクトリには権限が/home必要です。www-data:user
        chown www-data:me /home/me

または

  1. Web / Apacheグループには、www-dataサービスを使用するすべてのユーザーを含める必要があります。
  2. Apacheとユーザーは、互いへのアクセスwwwを制限しながら、互いへのアクセスが必要です。
    • ホームユーザーのフォルダには権限が必要です。chown me:me /home/me
    • /homeApacheに属するchown www-data:root /home

これにより、Apacheは必要なディレクトリにアクセスでき、wwwユーザーは他のユーザーフォルダにアクセスできなくなります。

ここで重要なのは、グループ権限がユーザー間で共有され、Apache自体が他のユーザーに公開されないユーザーであることです。たとえば、Apacheと私にアクセスを許可すると、chown www:me /home/me他のユーザーから隔離されたままになります(そしてwwwグループの誰もがアクセスを許可されます)。ファイルクリップ))mechown me:www /home/meme

ディレクトリは、現在の設定でapache(ユーザー)に属する場所wwwに存在する必要があるか、ユーザーディレクトリ内にあるため、回避策です。www-data/home/mewww-data:me/homewww-data:rootwww

そのため、デフォルトの場所はホームディレクトリではなくホームディレクトリにwwwあります。これは、Apacheに不要なアクセス権(たとえば、ユーザーフォルダ全体へのアクセス権など)を付与せずに、Apacheとユーザーがw / rを許可できるようにするためです。/varwww

ホームフォルダが次の場合ただ(Webを使用)現在の提案/構成に満足していることを意味します。wwwWebホスティング以外の目的でこのシステムを使用している場合は、フォルダ以外の場所に配置する必要wwwがあります。ユースケースを削除し、ファイルアクセスをファイルアクセス権によってのみ管理されているクラシック構成に移動するには、/home/varChrootDirectoryこれはクラシックユーザーの制限事項の一部を読む...

セキュリティ、分離、Webホスティング、他のLinux/サーバーで使用各ユーザーにさまざまなソリューションを実装し、仮想化および/またはサンドボックスを開発する必要があります。

あなたが要求したことを達成する他の可能性はたくさんありますが、あなたの構成についてはこれが最速です。リソースセクションをお読みください。最終推奨事項以下はより適切な実装です。

構成

実装は、ターゲットのセキュリティレベルとターゲットの用途によって異なります。したがって、ある構成はある状況には適していますが、同時に他の状況には不適切かもしれません。

ChrootDirectory現在の設定は、各SSHユーザー間の分離を管理するためにクラシックファイル権限の代わりにグループとユーザーアクセスレベルを使用するクラシック構成とは大きく異なりません。これを達成するための構成では、ユーザーアクセスレベルが欠落しているようです。実装方法の詳細は次のとおりです。ここここそしてここ(つまり、ChrootDirectory他の方法で使用するのは良いセキュリティ慣行です)

代替(強化されたセキュリティ)

PermitRootLogin yesFirst を使用しないで、代わりにmesuders にユーザーを追加します。その後、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権限を管理します。

おすすめ記事