通过将 IP 列入白名单和更改别名来保护 phpMyAdmin
Securing phpMyAdmin by whitelisting IPs and changing alias
我正在尝试找出保护对我的 MariaDB 数据库的访问的最佳方法。我有一个根非 wordpress 站点,其中有 2 个 wordpress 站点作为目录(/blog 和 /shop)——每个站点都有单独的数据库——使用 phpMyAdmin 作为数据库查看器(可在 /phpmyadmin 访问)。我想提高安全性,这样它就不会那么容易被黑客入侵。但是,我似乎无法实施任何推荐的安全措施。
创建 .htaccess 并在 /usr/share/phpmyadmin 中添加以下内容到白名单 IP 并阻止所有其他 IP 无效:
Order Deny,Allow
Deny from All
Allow from 12.34.56.78
通过配置文件更改 phpMyAdmin url(因此无法在 /phpmyadmin 访问)似乎也没有效果。
我假设这是因为 apache 不是 运行ning(我使用 Nginx 运行 我的主域和 2 个 wordpress 站点)。我不能同时 运行 apache 和 Nginx(大概是因为它们都在争夺端口 80),但我不明白的是,当 Nginx 运行ning 而 apache 应该不是 运行ning,/phpmyadmin link 怎么还可以访问?
这是我在 /etc/nginx/sites-available 中的 .conf 文件(也被 symlink 编辑为启用站点):
upstream wp-php-handler-four {
server unix:/var/run/php/php7.4-fpm.sock;
}
server {
listen 1234 default_server;
listen [::]:1234 default_server;
root /var/www/site;
# Add index.php to the list if you are using PHP
index index.html index.htm index.nginx-debian.html index.php;
server_name _;
location / {
# First attempt to serve request as file, then
# as directory, then fall back to displaying a 404.
try_files $uri $uri/ =404;
}
location /blog {
try_files $uri $uri/ /blog/index.php?$args;
}
location /shop {
try_files $uri $uri/ /shop/index.php?$args;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass wp-php-handler-four;
}
}
我按照教程进行了设置(也许我误解了它是如何完全设置的)但这实际上不是使用 apache 访问 /phpmyadmin 还是使用某些网络套接字?我怎样才能使上述安全尝试起作用?
注意:/usr/share/phpmyadmin/ 目录被符号 link 编辑为 /var/www/site/
Creating a .htaccess in /usr/share/phpmyadmin and adding the following to whitelist IPs and block all other IPs has no effect:
Order Deny,Allow
Deny from All
Allow from 12.34.56.78
当然它不会有任何影响,因为这个文件只由 apache 处理。
I can’t run apache and Nginx simultaneously (presumably because they’re both fighting for port 80)
在 nginx 的早期,有一种使用 nginx 处理静态文件和使用 apache 处理 PHP 脚本的技术。 Apache 在其他一些端口(例如 8080)上 运行,并且只侦听本地 IP (127.0.0.1)。 Nginx 配置看起来像
upstream apache {
server 127.0.0.1:8080;
}
server {
...
location ~ \.php$ {
proxy_pass http://apache;
}
}
如今很少使用它,因为使用 PHP-FPM 更灵活并且服务器开销更少。但是,当您有一个复杂的 .htaccess
配置并且不想为 nginx/PHP-FPM.
重写它时,可以使用它
but what I don’t get is that when Nginx is running and apache is supposedly not running, how is the /phpmyadmin link still accessible?
...
Is this not actually using apache to access /phpmyadmin or is it using some web socket?
此配置使用 UNIX socket /var/run/php/php7.4-fpm.sock
where PHP-FPM daemon is listening for requests (you can read an introduction to this 文章来获取一些额外的详细信息。
How can I make the above security attempts work?
许多可能的解决方案之一是
取消 /usr/share/phpmyadmin/
与 /var/www/site/
的链接
使用下面的 location
块(把它 放在 之前 location ~ \.php$ { ... }
一个:
location ~ ^/phpmyadmin(?<subpath>/.*)? {
allow 12.34.56.78;
# add other IPs here
deny all;
alias /usr/share/phpmyadmin/;
index index.php;
try_files $subpath $subpath/ =404;
location ~ \.php$ {
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$subpath;
fastcgi_pass wp-php-handler-four;
}
}
添加到其他相当详尽的答案中:
由于 Nginx 不使用 .htaccess 文件或与 Apache 相同的语法,因此您不会像 Apache 那样受到限制。您可能希望找到其他解决方案,或者您可以使用 phpMyAdmin 的内置功能:有一个内置的 allow/deny 功能,您可以在文档中了解:https://docs.phpmyadmin.net/en/latest/config.html#cfg_Servers_AllowDeny_order (and https://docs.phpmyadmin.net/en/latest/config.html#cfg_Servers_AllowDeny_rules);这将允许您根据用户名和 IP 地址限制访问。
我正在尝试找出保护对我的 MariaDB 数据库的访问的最佳方法。我有一个根非 wordpress 站点,其中有 2 个 wordpress 站点作为目录(/blog 和 /shop)——每个站点都有单独的数据库——使用 phpMyAdmin 作为数据库查看器(可在 /phpmyadmin 访问)。我想提高安全性,这样它就不会那么容易被黑客入侵。但是,我似乎无法实施任何推荐的安全措施。
创建 .htaccess 并在 /usr/share/phpmyadmin 中添加以下内容到白名单 IP 并阻止所有其他 IP 无效:
Order Deny,Allow
Deny from All
Allow from 12.34.56.78
通过配置文件更改 phpMyAdmin url(因此无法在 /phpmyadmin 访问)似乎也没有效果。
我假设这是因为 apache 不是 运行ning(我使用 Nginx 运行 我的主域和 2 个 wordpress 站点)。我不能同时 运行 apache 和 Nginx(大概是因为它们都在争夺端口 80),但我不明白的是,当 Nginx 运行ning 而 apache 应该不是 运行ning,/phpmyadmin link 怎么还可以访问?
这是我在 /etc/nginx/sites-available 中的 .conf 文件(也被 symlink 编辑为启用站点):
upstream wp-php-handler-four {
server unix:/var/run/php/php7.4-fpm.sock;
}
server {
listen 1234 default_server;
listen [::]:1234 default_server;
root /var/www/site;
# Add index.php to the list if you are using PHP
index index.html index.htm index.nginx-debian.html index.php;
server_name _;
location / {
# First attempt to serve request as file, then
# as directory, then fall back to displaying a 404.
try_files $uri $uri/ =404;
}
location /blog {
try_files $uri $uri/ /blog/index.php?$args;
}
location /shop {
try_files $uri $uri/ /shop/index.php?$args;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass wp-php-handler-four;
}
}
我按照教程进行了设置(也许我误解了它是如何完全设置的)但这实际上不是使用 apache 访问 /phpmyadmin 还是使用某些网络套接字?我怎样才能使上述安全尝试起作用?
注意:/usr/share/phpmyadmin/ 目录被符号 link 编辑为 /var/www/site/
Creating a .htaccess in /usr/share/phpmyadmin and adding the following to whitelist IPs and block all other IPs has no effect:
Order Deny,Allow Deny from All Allow from 12.34.56.78
当然它不会有任何影响,因为这个文件只由 apache 处理。
I can’t run apache and Nginx simultaneously (presumably because they’re both fighting for port 80)
在 nginx 的早期,有一种使用 nginx 处理静态文件和使用 apache 处理 PHP 脚本的技术。 Apache 在其他一些端口(例如 8080)上 运行,并且只侦听本地 IP (127.0.0.1)。 Nginx 配置看起来像
upstream apache {
server 127.0.0.1:8080;
}
server {
...
location ~ \.php$ {
proxy_pass http://apache;
}
}
如今很少使用它,因为使用 PHP-FPM 更灵活并且服务器开销更少。但是,当您有一个复杂的 .htaccess
配置并且不想为 nginx/PHP-FPM.
but what I don’t get is that when Nginx is running and apache is supposedly not running, how is the /phpmyadmin link still accessible?
...
Is this not actually using apache to access /phpmyadmin or is it using some web socket?
此配置使用 UNIX socket /var/run/php/php7.4-fpm.sock
where PHP-FPM daemon is listening for requests (you can read an introduction to this 文章来获取一些额外的详细信息。
How can I make the above security attempts work?
许多可能的解决方案之一是
取消
的链接/usr/share/phpmyadmin/
与/var/www/site/
使用下面的
location
块(把它 放在 之前location ~ \.php$ { ... }
一个:
location ~ ^/phpmyadmin(?<subpath>/.*)? {
allow 12.34.56.78;
# add other IPs here
deny all;
alias /usr/share/phpmyadmin/;
index index.php;
try_files $subpath $subpath/ =404;
location ~ \.php$ {
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$subpath;
fastcgi_pass wp-php-handler-four;
}
}
添加到其他相当详尽的答案中:
由于 Nginx 不使用 .htaccess 文件或与 Apache 相同的语法,因此您不会像 Apache 那样受到限制。您可能希望找到其他解决方案,或者您可以使用 phpMyAdmin 的内置功能:有一个内置的 allow/deny 功能,您可以在文档中了解:https://docs.phpmyadmin.net/en/latest/config.html#cfg_Servers_AllowDeny_order (and https://docs.phpmyadmin.net/en/latest/config.html#cfg_Servers_AllowDeny_rules);这将允许您根据用户名和 IP 地址限制访问。