2017-06-09 3 views
0

imitieren Ich arbeite an einer eingeschränkten Zugriffssteuerung Website parallel zu einem öffentlichen. Momentan werden alle Benutzerzugriffs- und Verzeichniskennworteinstellungen in cPanel vorgenommen, jedoch ist cPanel für einige Benutzer etwas verwirrend. Aber wir müssen auf der Website mit eingeschränktem Zugang die Liste der autorisierten Personen ändern, die darauf zugreifen können (und einige andere Teile der Website).Müssen cPanel Benutzerzugriff/Verzeichnis Passwort

Also ich versuche, ein PHP-Skript auf der Site mit eingeschränktem Zugriff einzurichten, etwas Ähnliches wie cPanel zu tun, um die tatsächlichen Passwd-Dateien bearbeiten zu können. Aber alles, was ich versucht habe, hat nicht funktioniert. Unser Webserver ist LiteSpeed ​​nicht Apache (kann dies aufgrund der gemeinsamen Host-Setup nicht ändern). Es verwendet passwd-Dateien in einem Ordner außerhalb des für den Web zugänglichen Verzeichnisses, auf das von den .htaccess-Dateien verwiesen wird. Wenn ich mir die vorhandenen Zugriffe anschaue, sehe ich, dass es anscheinend nicht den gesalzenen MD5-Hash verwendet, der in den Apache-Dokumenten angegeben ist: Das gespeicherte Hash-Passwort unterscheidet sich von dem, was ich zu erwarten hätte Salz ist deutlich mehr als 2 Zeichen), und aus Sicherheitsgründen möchte ich einen bestimmten Passwort Hashing-Algorithmus in meinen Code einbetten. Ich habe versucht, das Dienstprogramm htpasswd normalerweise mit Apache über exec oder shell_exec geliefert zu verwenden, aber es ist entweder nicht installiert oder nicht zugänglich (und ich habe verschiedene Pfade ausprobiert - auch für seine Existenz von file_exists überprüft zurückgegeben, in allen Fällen falsch kaum eine Überraschung, dass sich keine der Dateien geändert hat!).

Ich habe die letzten Tage damit verbracht, verschiedene Suchen durch verschiedene Dokumentationssätze zu machen, um zu sehen, was LiteSpeed ​​und/oder cPanel machen, aber meistens suchen meine Suchen nach cPanel-Login-Passwörtern und nicht nach den Zugangskontrollpasswörtern. Ich habe versucht, etwas cPanel Quellcode zu suchen, aber hatte kein Glück, etwas zu finden.

Wenn jemand einen direkteren Verweis auf einen Quellcode hat, oder etwas in der Dokumentation, die beschreibt, wie man die Funktion zum Hinzufügen/Aktualisieren/Löschen von Passwörtern in LiteSpeed ​​ausführt, wäre das wunderbar. Sogar eine Möglichkeit, die cPanel-Funktionalität direkter zu aktivieren, wäre nützlich (ich weiß, dass es eine API hat, aber der Pfad zu ihr auf meinem Host gesperrt ist).

Bearbeiten: Nach Steves Kommentar ging ich ein paar Dinge zu überprüfen. Meine Skripts können die passwd-Dateien unabhängig von der Verzeichnisplatzierung des Skripts anzeigen. Die passwd-Datei hat die Berechtigungen 644, wie ich es erwarte, ich erwarte, dass der "Benutzer", der die Schreibberechtigungen hat, derjenige ist, den ich benutze, um sich bei cPanel anzumelden, was hoffentlich nicht der Benutzername ist, unter dem der Server läuft. was zusätzliche Schwierigkeiten mit sich bringt.

Edit # 2: Ich habe einen zusätzlichen Test, wo ich ein temporäres passwortgeschütztes Unterverzeichnis erstellt, und fügte dann einen Benutzer direkt aus dem PHP-Skript (Kopieren Sie eine der vorhandenen Zeilen, aber den Benutzernamen geändert). Das hat gut funktioniert, der neue Benutzer wurde hinzugefügt, und cPanel sah sogar die Änderung. Also Berechtigungen kein Problem.

Edit # 3: Ich habe etwas gespielt und bekam eine Zeichenfolge aus Crypt, die meisten entspricht, was in der Passwd-Datei ist (Ich werde eine Warnmeldung auf der Reset-Seite hinzufügen, um sicherzustellen, dass der neueste Algorithmus ist benutzt). Das Salz, nach dem crypt sucht, ist jedoch $ 1 $ < 8-char-rand-string> $ wobei in der Datei $ apr1 $ < 8-char-rand-string> $ ist. Hinzufügen der "Apr" in der Salz Ursachen Crypt fehlschlagen :-(.

+1

Cpanel verwendet weitgehend Linux-Berechtigungen. Dies wird auf einem gemeinsam genutzten Host nicht möglich sein. Müssen Sie diese Art von Berechtigungen tatsächlich verwenden? Wenn die Website-Benutzer (wie üblich) nur über die Website Zugriff auf den Server haben, dann führen Sie einfach Ihre eigene Zugriffskontrollschicht in php/sql aus. – Steve

+0

@Steve, nur um klar zu sein, ich möchte keinen Zugriff auf cPanel oder ändern cPanel Berechtigungen. Ich möchte Zugriffsrechte auf Verzeichnisse unter public_html setzen, und Web-Server-Software wie Apache und Litespeed haben diese Art von Mechanismus eingebaut. Und ich möchte vermeiden, wenn möglich, unsere eigene Zugriffskontrolle aufzubauen oder zu verwenden, um die Wartung zu begrenzen. Der Verweis auf cPanel ist, dass Sie dies in cPanel tun können, und ich möchte entweder das gleiche tun oder cPanel dafür unter der Haube wiederverwenden. – greenbutterfly

Antwort

0

Für die Zukunft Die Referenz, mein Edit # 3 war 95% des Weges zu der Lösung, die ich jetzt eingerichtet habe und funktioniert. Ich erkannte schließlich, dass ich nur das "apr" fallen lassen musste, dass htpasswd irgendwie in das Salz für die Algorithmusauswahl einfügt, und benutze einfach das Salz mit den "$ 1 $" davor und "$" danach. Das zusammen mit dem Benutzernamen in die passwd-Datei zu schreiben, gab mir Zugriff und funktionierte. Die Seite enthält eine Warnung an zukünftige Besucher der Seite, um sicherzustellen, dass der Algorithmus aktualisiert wird, wenn er benötigt wird.

Der tatsächliche Verschlüsselungscode lautet: crypt ($ password, '$ 1 $'. Substr (str_replace ('+', '.', Base64_encode (openssl_random_pseudo_bytes (12))), 0, 8).

Ich hoffe, dass mein Code kryptografisch sicher genug ist. Ich habe viel zu viele Codeschnipsel gesehen, wo das Salz mit mt_rand oder gleichwertigem generiert wird ... (hier shudder einfügen)

Edit: Nachdem ich das beantwortet habe, habe ich seither die cPanel API PHP-Datei nicht automatisch gefunden Eingerichtet. Es ist ein Extra, das Sie herunterladen müssen, siehe https://github.com/CpanelInc/xmlapi-php. Ich spiele jetzt damit herum und schrubbe wahrscheinlich den Code, den ich gemacht habe ... aber ich belasse es hier aus historischen Gründen oder in der Hoffnung, dass es jemand anderem hilft.

0

Sie können hinzufügen/verweigern IPs in..htaccess im Verzeichnis,

Auftrag verweigert, erlaubt

verweigern aus allen

erlauben, von (Ihr-ip)

oder eine Passwort-Schutzregel für ein bestimmtes Verzeichnis hinzuzufügen, in .htaccess.

AuthType Basic

AuthName "Geschützter"

AuthUserFile /path/to/.htpasswd

require valid-user

so etwas wie: http://www.htaccesstools.com/articles/password-protection/

+0

Diese Infrastruktur ist bereits vorhanden, die Verzeichnisse sind bereits passwortgeschützt. Ich muss die passwd Dateien auf die gleiche Weise bearbeiten, wie cPanel sie verwaltet. Entschuldigung, wenn das nicht 100% klar von meinem ursprünglichen Post ist, werde ich bearbeiten, um das zu klären. – greenbutterfly