2017-06-09 7 views
0

私は公開されているものと並行して制限付きアクセスコントロールのウェブサイトで取り組んでいます。現時点では、すべてのユーザーアクセスとディレクトリのパスワード設定はcPanelで実行されますが、cPanelはユーザーの中には少し混乱します。しかしアクセスが制限されているWebサイトでは、アクセスできる権限のあるユーザー(およびWebサイトの他の部分)のリストを変更する必要があります。cPanelのユーザアクセス/ディレクトリパスワードを模倣する必要があります

私は実際のpasswdファイルを編集できるように、制限されたアクセスサイトにPHPスクリプトを設定して、cPanelに似たようなことをしようとしています。しかし、私が試したことはすべてうまくいかなかった。私たちのウェブサーバーは、LiteSpeedではなく、Apache(共有ホストの設定によりこれを変更することはできません)です。これは、.htaccessファイルによって参照されるWebアクセス可能なフォルダの外にあるフォルダ内のpasswdファイルを使用しています。既存のアクセスを見てみると、Apacheのdocsに記載されている塩漬けのMD5ハッシュを使用しているようには見えません。保存されているハッシュされたパスワードは、 saltは2文字以上です)、セキュリティ上の理由から、私のコードに特定のパスワードハッシングアルゴリズムを埋め込むことには消極的です。私は通常、execやshell_exec経由でapacheで提供されるhtpasswdユーティリティを使用しようとしましたが、インストールされていないか、アクセスできないです(そしていくつかの異なるパスを試しました - file_existsによって存在が確認されたとしても、ほとんどのファイルが変更されていないのは驚きです)。

私は、LiteSpeedおよび/またはcPanelの動作を確認するために、さまざまなドキュメントを使用してさまざまな検索を行ってきましたが、ほとんどの場合、ユーザのアクセス制御パスワードではなくcPanelログインパスワードが検索されます。私はいくつかのcPanelソースコードを調べてみましたが、何かを見つけることはできませんでした。

ソースコードや、LiteSpeedでパスワードの追加/更新/削除機能を実行する方法について説明しているドキュメントを参照してください。より直接的にcPanelの機能をより直接的にトリガーする方法でも便利です(APIを持っていることはわかっていますが、そのパスはホスト上でロックされています)。

編集:スティーブのコメントの後、私はいくつかの事をチェックしました。私のスクリプトは、スクリプトのディレクトリ配置に関係なくpasswdファイルを見ることができます。 passwdファイルには私が期待しているパーミッションが644あります。書き込み権限を持っている "user"は、私がcPanelにログインするのを期待しています。これはさらに困難をもたらす。

Edit#2:一時的なパスワードで保護されたサブディレクトリを作成し、PHPスクリプトから直接ユーザーを追加しました(コピーして既存の行の1つをコピーしてユーザー名を変更しました)。うまくいけば、新しいユーザーが追加され、cPanelはその変更を見ていました。したがって、アクセス権は問題になりません。

編集#3:私はいくつかの演奏をして、パスワードがpasswdファイルにあるものとほとんど同じである暗号から出力された文字列を取得しました(最新のアルゴリズムが確実になるようにリセットページに警告メッセージを追加します)。中古)。しかし、暗号が探している塩は$ 1 $ < 8-char-rand-string> $ですが、ファイル内の内容は$ apr1 $ < 8-char-rand-string> $です。塩に "apr"を追加すると、cryptは失敗します:

+1

Cpanelは主にLinuxパーミッションを使用します。共有ホストでこれを行うことはできません。これらのアクセス許可を実際に使用する必要がありますか? WebサイトユーザーがWebサイト経由でサーバーにアクセスできる場合(通常どおり)、php/sqlで独自のアクセス制御レイヤーを実行するだけです。 – Steve

+0

@Steve、明らかにするために、私はcPanelへのアクセスやcPanel権限の変更を望んでいません。私はpublic_htmlの下のディレクトリへのアクセス権を設定したいと思っています。ApacheやlitespeedなどのWebサーバーソフトウェアには、この種のメカニズムが組み込まれています。可能な限り、独自のアクセス制御を構築または使用しないでください。 cPanelへの言及は、cPanelでこれを行うことができるということです。私は同じことをやり直しています。 – greenbutterfly

答えて

0

未来eのリファレンスでは、私の編集#3はソリューションへの道のりの95%でした。私はこれで現在管理しています。私は最終的に、htpasswdが何らかの形でアルゴリズム選択のためのsaltに挿入する "apr"を落とし、その後に$ '$'と '$'を使ってsaltを使うだけで済むことに気付きました。それをユーザー名とともにpasswdファイルに書き込んで私にアクセスし、働かせました。ページには将来の訪問者に警告が表示され、必要なときにアルゴリズムが更新されるようにします。

実際の暗号化コードは、crypt($ password、 '$ 1 $'。substr(str_replace( '+'、 '。'、base64_encode(openssl_random_pseudo_bytes(12))、0,8)です。

私は私のコードは十分に暗号的に安全であることを願っています。私は塩がmt_randまたは等価物を使用して生成されているところでたくさんのコードスニペットを見てきました...(ここでシャダーを挿入してください)

編集:これまで私はcPanel API PHPファイルが自動的に見つからないインストールされます。それはあなたがダウンロードする必要がある余分です、https://github.com/CpanelInc/xmlapi-phpを参照してください。だから、私はこれでやり遂げようとしています。おそらく私がやったコードを洗うでしょう...しかし、歴史的な理由からこの答えに残しておいてください。

0

拒否/許可IPを追加できます。ディレクトリ内のhtaccess、拒否

ため、

はすべて

は(あなたの-IP)

から許可から拒否または特定のディレクトリにあるため、いくつかのパスワード保護ルールを追加することができ.htaccess .htaccess。

のAuthType Basicの

でAuthName "パスワード保護地域"

AuthUserFileはは

が有効なユーザー

を必要とするようなもの/path/to/.htpasswd:http://www.htaccesstools.com/articles/password-protection/

+0

そのインフラストラクチャはすでに存在していますが、ディレクトリはすでにパスワードで保護されています。 cPanelが管理するのと同じ方法でpasswdファイルを編集する必要があります。申し訳ありませんが、それは私の元の投稿から100%明確でない場合、私はそれを明確にするために編集に行くでしょう。 – greenbutterfly

関連する問題