运行脚本以修改nginx服务器配置的最佳方法

时间:2017-01-08 05:42:28

标签: php linux security nginx cgi

我需要能够提供一个按钮或链接来运行一个cgi脚本,该脚本反过来创建/修改/etc/nginx目录中可用的文件。我可以想到两种方法:

  1. 以某种方式授予脚本root权限以使文件修改。
  2. /etc/nginx/sites-available目录组更改为www-data 并使其可以按组写入。
  3. 用户将无法输入任何文字。该脚本具有服务器变量所需的一切。

    运行此类脚本最安全的方法是什么?除了两个建议之外还有其他选择吗?是否有任何安全隐患需要避免?

1 个答案:

答案 0 :(得分:0)

可以通过多种方式限制对特定HTTP请求的访问。我认为"最好的"方式是最适合您的需求/偏好的方式。我将仅列出我认为最有用的选项。

基于网络的身份验证系统

使用自定义身份验证系统,您只能为具有足够权限的授权用户限制访问权限(就此系统而言)。例如,只能为属于" Web服务器管理员" 组的用户处理对/vhost.php的请求。

<强>防火墙

您可以维护允许向Web服务器主机发送请求的源IP地址的白名单,例如:

iptables -A INPUT -p tcp --dport 80 -s AllowedIP -j ACCEPT
iptables -A INPUT -p tcp --dport 80 -j DROP

例如,请参阅this问题的答案。

<强> HTTPS

我建议configuring HTTPS以保护流量免受拦截。注意,防火墙应该相应调整。例如,您可以删除端口80上的所有流量,并允许端口443上的请求获取特定IP地址。

文件系统权限

我认为允许Web服务器的用户对/etc/nginx/sites-available具有读/写权限就足够了。

或者,你可以

1)仅针对root打开目录的权限,2)仅为root创建脚本可执行文件,并且3)允许通过&#34;无密码&#34;执行脚本。 sudo仅适用于通过/etc/sudoers的Web服务器用户/组,例如:

Cmnd_Alias  WWW_HOST_CONFIG = /path/to/script
%www-data ALL=(ALL) NOPASSWD: WWW_HOST_CONFIG

注意,如果您使用代理(例如PHP-FPM或Apache2),则需要为代理进程的用户提供适当的权限。顺便说一句,PHP-FPM允许通过配置文件设置进程用户/组,例如:

[my_project]
listen = /tmp/php-fpm-my_project.sock
listen.mode = 0660
listen.owner = username
listen.group = www
user = username
group = www