OK, donc j'ai plusieurs sites sur un vps avec des certificats ssl. J'ai la configuration de sécurité mod ainsi que tripwire. Ma question concerne ensuite la sécurité de phpmyadmin. Si mon adresse IP est 123.123.123.123, je peux accéder à phpmyadmin à l'aide de 123.123.123.123/mypmyadmin-IHaveChangedThisURL.
Et même si j'ai changé l'URL de phpmyadmin, phpmyadmin est toujours accessible si vous pouvez trouver l'URL.
J'ai ajouté un fichier html vierge au répertoire racine et aucun index de répertoire n'est donc donné à l'aide du nom d'hôte vps ou de l'adresse IP vps.
Y a-t-il autre chose que je puisse faire pour protéger l'utilisation de l'IP et tenter d'obtenir phpmyadmin, etc.?
Toute orientation appréciée. Merci.
Plusieurs choses pourraient être faites. Je vais expliquer mes idées et la manière dont elles pourraient être mises en œuvre dans Apache2.
Activez d'abord le module SSL s'il n'est pas activé: Sudo a2enmod ssl
.
Ouvrez le port 443 (HTTPS) dans le pare-feu . Vous devriez utiliser votre port personnalisé ici.
Suivez ce manuel et activez un certificat gratuit à partir de Let's Encrypt.
Vérifiez cette réponse et désactivez les chiffrements faibles.
Ensuite, vous pouvez forcer tous les utilisateurs à utiliser HTTPS .
Pour modifier l'URI, dans la configuration par défaut, vous devez éditer /etc/phpmyadmin/Apache.conf
et modifier la première partie (/phpmyadmin
) de cette directive:
Alias /phpmyadmin /usr/share/phpmyadmin
Redémarrez Apache et vous pourrez accéder à PhpMyAdmin via le nouvel URI.
Voici un manuel étape par étape: Comment exécuter PhpMyAdmin sur un port différent . N'oubliez pas d'ouvrir ce port dans le pare-feu.
Exécutez PhpMyAdmin sur un port différent. Supposons qu'il s'agisse du port 99
. Fermez ce port dans le pare-feu. Ensuite, établissez une connexion SSH avec une commande similaire à:
ssh -fTN -R 99:localhost:99 <user>@<domain>or<ip>
-R
99
distant est transmis au port local 99
sur le localhost
(127.0.0.1
).-fTN
pousseront la connexion en arrière-plan.Ensuite, PhpMyAdmin devrait être accessible via le navigateur Web de votre machine locale à l’URL http://localhost:99/
. Plus d'idées pourraient être trouvées ici:
Plus de détails peuvent être trouvés dans ce manuel d'Apache: Authentification et autorisation . Le package Apache2-utils
doit être installé. En bref, les étapes sont les suivantes:
Créez un dossier en dehors de /var/www
, où le fichier de mots de passe sera conservé. Puis générez le fichier de mot de passe. Supposons que le nom de ce nouveau dossier est /var/www-auth
:
$ Sudo mkdir /var/www-auth
$ cd /var/www-auth
$ Sudo htpasswd -c .htpasswd.phpmyadmin <user>
New Password: *********
Re-Type New Password: *********
Adding Password For User <user>
.htpasswd.phpmyadmin
est le nom du fichier dans lequel le mot de passe sera stocké.user
est le nom de connexion qui sera utilisé.*********
est le mot de passe :)-c
signifie créer un nouveau fichier. Si cette option est omise, la commande htpasswd
essaiera d’ajouter le nouveau login name
à un .htpasswd.file
existant.Modifiez le type d'authentification PhpMyAdmin en modifiant le /etc/phpmyadmin/Apache.conf
de cette manière (ou créez le fichier .htaccess
):
<Directory /usr/share/phpmyadmin>
.....
<IfModule mod_authz_core.c>
<IfModule mod_authn_file.c>
AuthType Basic
AuthName "The name of the authentication form - type some user and password hints"
AuthUserFile /var/www-auth/.htpasswd.phpmyadmin
</IfModule>
Require valid-user
</IfModule>
.....
</Directory>
Activez les modules et redémarrez Apache2 pour appliquer la nouvelle configuration:
Sudo a2enmod authz_core authz_user authn_file
Sudo systemctl restart Apache2.service
Maintenant, pour accéder à l'URI de PhpMyAdmin, vous devez entrer le nom de connexion user
et son password
.
Suivez les étapes 1 et 3 de ce manuel pour générer le fichier .google_authenticator
, situé dans votre répertoire $HOME
. À l'étape 4 est décrite comment générer des codes d'authentification.
Créez un nouveau répertoire sous /var/www-auth
. Supposons que le nom de ce nouveau dossier est google_authenticator
:
Sudo mkdir -p /var/www-auth/google_authenticator
Copiez le fichier $HOME/.google_authenticator
dans ce répertoire et modifiez ses autorisations (il doit être lisible pour www-data
):
Sudo cp $HOME/.google_authenticator /var/www-auth/google_authenticator/user
Sudo chown www-data:www-data /var/www-auth/google_authenticator/user
Veuillez noter que le nom du fichier détermine le nom de connexion! Le nom du fichier sera utilisé comme nom d’utilisateur lors de la connexion à votre site Web sécurisé.
Modifiez le nouveau fichier en ajoutant la directive " PASSWORD=qwerty
, où qwerty
est le nouveau mot de passe de connexion.
E3CY3TNSNBXXXXXX "RESETTING_TIME_SKEW ... " RATE_LIMIT 3 30 ... "WINDOW_SIZE 17 " DISALLOW_REUSE 48885555 ... "TOTP_AUTH "MOT DE PASSE = qwerty 4567 ...
Installez mod_authn_google
pour Apache2. Malheureusement, ce module n’est pas disponible dans le référentiel d’Ubuntu, mais nous pouvons l’obtenir de ce référentiel . Les étapes sont les suivantes: (1) accédez à votre Downloads
, (2) téléchargez le package dba-apa24-mod_authn_google-r22... .rpm
, (3) extrayez mod_authn_google.so
, (4) placez le fichier dans /usr/lib/Apache2/modules/
, (5) accordez les autorisations appropriées, ( 6) Créer un fichier de chargement de module:
cd $HOME/Downloads
wget http://download.opensuse.org/repositories/home:/csbuild:/DBA/RedHat_RHEL-7/x86_64/dba-apa24-mod_authn_google-r22-1.1.x86_64.rpm
rpm2cpio dba-apa24-mod_authn_google-r22-1.1.x86_64.rpm | cpio -iv --to-stdout ./DBA/Apache24/WWW/2.4.x/modules/mod_authn_google-r22.so > mod_authn_google.so
Sudo mv mod_authn_google.so /usr/lib/Apache2/modules/
Sudo chown root:root /usr/lib/Apache2/modules/mod_authn_google.so
Sudo chmod g-w /usr/lib/Apache2/modules/mod_authn_google.so
echo "LoadModule authn_google_module /usr/lib/Apache2/modules/mod_authn_google.so" | Sudo tee /etc/Apache2/mods-available/authn_google.load
Sudo a2enmod authn_google
Modifiez le type d'authentification PhpMyAdmin en modifiant le /etc/phpmyadmin/Apache.conf
de cette manière (ou créez le fichier .htaccess
):
<Directory /usr/share/phpmyadmin>
.....
<IfModule mod_authz_core.c>
<IfModule mod_authn_google.c>
AuthType Basic
AuthName "The name of the authentication form - type some user and password hints"
AuthBasicProvider "google_authenticator"
GoogleAuthUserPath /var/www-auth/google_authenticator
GoogleAuthCookieLife 3600
GoogleAuthEntryWindow 2
</IfModule>
Require valid-user
</IfModule>
.....
</Directory>
Activez les modules et redémarrez Apache2 pour appliquer la nouvelle configuration:
Sudo a2enmod authz_core authz_user authn_google
Sudo systemctl restart Apache2.service
Maintenant, pour accéder à l'URI de PhpMyAdmin, vous devez entrer le nom de connexion user
, son password
et ses 6 chiffres token code
:
Avec ModSecurity, vous pouvez ajouter des restrictions plus souples à l'URI de PhpMyAdmin. Dans cette réponse , sous la section "Règles de sécurité ModS>> SAS > Iptables ", j'ai brièvement décrit comment créer des règles personnalisées pour ModSecurity.