OK、私はSSL証明書を持つvpsにいくつかのサイトを持っています。私はmodのセキュリティ設定とtripwireを持っています。私の質問は、phpmyadminセキュリティに関するものです。 IPが123.123.123.123の場合、123.123.123.123/mypmyadmin-IHaveChangedThisURLを使用してphpmyadminにアクセスできます。
PhpmyadminのURLを変更しても、URLが見つかった場合はphpmyadminにアクセスできます。
ルートディレクトリに空のhtmlファイルを追加したため、vpsホスト名またはvps IPを使用してディレクトリインデックスが指定されていません。
IPの使用を保護し、phpmyadminなどにアクセスしようとするためにできることは他にありますか?
どんなガイダンスも感謝します。ありがとう。
いくつかのことができます。私のアイデアと、Apache2でそれらを実装する方法を説明します。
SSLモジュールが有効になっていない場合は、まず有効にします:Sudo a2enmod ssl
。
ポート443(HTTPS)を firewall に挿入します。ここでカスタムポートを使用する必要があります。
このマニュアル に従って、Let's Encryptから無料の証明書を有効にします。
this answer を確認し、弱い暗号を無効にします。
次に、 すべてのユーザーにHTTPS の使用を強制できます。
URIを変更するには、デフォルト構成内で、/etc/phpmyadmin/Apache.conf
を編集し、このディレクティブの最初の部分(/phpmyadmin
)を変更する必要があります。
Alias /phpmyadmin /usr/share/phpmyadmin
Apacheを再起動すると、新しいURIを介してPhpMyAdminにアクセスできます。
以下はステップバイステップのマニュアルです: PhpMyAdminを異なるポートで実行する方法 。ファイアウォールへのこのポートを開くことを忘れないでください。
別のポートでPhpMyAdminを実行します。それがポート99
であると仮定しましょう。 このポートを閉じるファイアウォールに。次に、次のようなコマンドでSSH接続を確立します。
ssh -fTN -R 99:localhost:99 <user>@<domain>or<ip>
-R
ポート99
がlocalhost
(99
)のローカルポート127.0.0.1
に転送されるssh tunnel を作成します。-fTN
は、接続をバックグラウンドにプッシュします。その後、PhpMyAdminは、URL http://localhost:99/
でローカルマシンのWebブラウザを介してアクセスできるはずです。他のアイデアはここで見つけることができます:
詳細については、Apacheのマニュアル Authentication and Authorization を参照してください。パッケージ Apache2-utils
をインストールする必要があります。要するに、手順は次のとおりです。
パスワードファイルが保存される/var/www
の外にフォルダーを作成します。次に、パスワードファイルを生成します。この新しいフォルダーの名前が/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
は、パスワードが保存されるファイルの名前です。user
は、使用されるログイン名です。*********
はパスワードです:)-c
は、新しいファイルを作成することを意味します。このオプションを省略すると、htpasswd
コマンドは新しいlogin name
を既存の.htpasswd.file
に追加しようとします。次のように/etc/phpmyadmin/Apache.conf
を編集してPhpMyAdmin認証タイプを変更します(または.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>
モジュールを有効にし、Apache2を再起動して新しい構成を適用します。
Sudo a2enmod authz_core authz_user authn_file
Sudo systemctl restart Apache2.service
PhpMyAdminのURIにアクセスするには、ログイン名user
とそのpassword
を指定する必要があります。
手順 1 および 3 from this manual .google_authenticator
ディレクトリにある$HOME
ファイルを生成します。ステップ 4 では、認証コードを生成する方法を説明しています。
/var/www-auth
の下に新しいディレクトリを作成します。この新しいフォルダーの名前がgoogle_authenticator
であると仮定しましょう:
Sudo mkdir -p /var/www-auth/google_authenticator
ファイル$HOME/.google_authenticator
をそのディレクトリにコピーし、そのアクセス許可を変更します(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
ファイル名がログイン名を決定することに注意してください!ファイル名は、安全なWebサイトにログインするときにユーザー名として使用されます。
ディレクティブ" PASSWORD=qwerty
を追加して、新しいファイルを変更します。ここで、qwerty
は新しいログインパスワードです。
E3CY3TNSNBXXXXXX "RESETTING_TIME_SKEW ... " RATE_LIMIT 3 30 ... "WINDOW_SIZE 17 " DISALLOW_REUSE 48885555 ... "TOTP_AUTH "PASSWORD = qwerty 4567 ...
Apache2のmod_authn_google
をインストールします。残念ながら、このモジュールはUbuntuのリポジトリ内では使用できませんが、 this repository から取得できます。手順は、(1)Downloads
に移動、(2)パッケージをダウンロード dba-apa24-mod_authn_google-r22... .rpm
、(3)mod_authn_google.so
を抽出、(4)ファイルを/usr/lib/Apache2/modules/
に配置、( 5)適切な許可を付与します。(6)モジュールロードファイルを作成します。
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
次のように/etc/phpmyadmin/Apache.conf
を編集してPhpMyAdmin認証タイプを変更します(または.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>
モジュールを有効にし、Apache2を再起動して新しい構成を適用します。
Sudo a2enmod authz_core authz_user authn_google
Sudo systemctl restart Apache2.service
PhpMyAdminのURIにアクセスするには、ログイン名user
、そのpassword
、および6桁のtoken code
を指定する必要があります。
ModSecurityを使用すると、PhpMyAdminのURIにより柔軟な制限を追加できます。 this answer のセクション"ModSecurity Rules> SAS> Iptables"、ModSecurityのカスタムルールを作成する方法を簡単に説明しました。