好的,我在具有 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 等?
任何指导都值得赞赏。谢谢。
答案1
有几件事可以做。我将解释我的想法以及如何在 Apache2 中实现它们。
1. 使用 HTTPS 连接保护你的数据不被嗅探
如果 SSL 模块尚未启用,请先启用它:
sudo a2enmod ssl
。打开 443 端口 (HTTPS)防火墙。您应该在这里使用您的自定义端口。
跟随本手册并启用来自 Let's Encrypt 的免费证书。
查看这个答案并禁用弱密码。
然后你可以强制所有用户使用 HTTPS。
2.更改 PhpMyAdmin 的 URI
要更改 URI,在默认配置中,您应该编辑并更改该指令的/etc/phpmyadmin/apache.conf
第一部分( ):/phpmyadmin
Alias /phpmyadmin /usr/share/phpmyadmin
重新启动 Apache,您将能够通过新的 URI 访问 PhpMyAdmin。
3. 在不同的端口上运行 PhpMyAdmin
以下是分步手册:如何在不同端口上运行 PhpMyAdmin. 不要忘记在防火墙中打开这个端口。
4. 仅通过 SSH 隧道本地访问 PhpMyAdmin
在不同的端口上运行 PhpMyAdmin。我们假设它是 port 99
。关闭此端口进入防火墙。然后通过类似以下命令建立 SSH 连接:
ssh -fTN -R 99:localhost:99 <user>@<domain>or<ip>
- 此命令将创建 ssh隧道,其中远程
-R
端口99
转发到( )99
上的本地端口。localhost
127.0.0.1
- 这些选项
-fTN
将会把连接推送到后台。
然后,您便可以通过本地计算机上的 Web 浏览器通过 URL 访问 PhpMyAdmin http://localhost:99/
。更多想法可在此处找到:
5. 通过密码验证保护 PhpMyAdmin URI 路径
更多详细信息可以参阅 Apache 手册:身份验证和授权. 包装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
。
修改PhpMyAdmin的身份验证类型,通过
/etc/phpmyadmin/apache.conf
这种方式编辑(或创建.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
。
6. 通过双因素身份验证(2FA)保护 PhpMyAdmin URI 路径:
按照步骤操作1和3从本手册生成
.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
请注意,文件名决定了登录名!文件名将在登录安全网站时用作用户名。
修改新文件,添加指令
" PASSWORD=qwerty
,其中qwerty
是新的登录密码。E3CY3TNSNBXXXXXX “正在重置时间偏差 ... “RATE_LIMIT 3 30...” “窗口大小 17 “禁止重复使用 48885555...” “ TOTP_AUTH” “密码=qwerty” 4567……
为 Apache2安装
mod_authn_google
。不幸的是,这个模块在 Ubuntu 的存储库中不可用,但我们可以从中获取它这个存储库。步骤如下:(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
修改PhpMyAdmin的身份验证类型,通过
/etc/phpmyadmin/apache.conf
这种方式编辑(或创建.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
:
7. 对 Apache 使用 ModSecurity
使用 ModSecurity,您可以为 PhpMyAdmin 的 URI 添加更灵活的限制。在这个答案,根据部分“ModSecurity 规则 > SAS > Iptables”,我简要描述了如何为 ModSecurity 创建自定义规则。