这是我当前 apache 配置中引用 cgi-bin 内容的部分。此信息包含在 debian 的默认配置中。是否应在实时/生产机器上将其删除?
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>
答案1
如果您没有从 /usr/lib/cgi-bin/ 运行任何 CGI,则没有必要。话虽如此,这是一台生产机器,因此请谨慎行事。
答案2
是的,应该在生产系统上删除它 - 除非(当然)您确实在使用它。如果您不确定,则可能意味着您没有使用它。
原因如下:使用此配置,cgi-bin/
指向/usr/lib/cgi-bin
并且其中的任何内容都可以执行。它是一个系统目录,因此其中的内容通常取决于您使用系统的包管理系统安装的内容。任何具有 Web 界面的软件(如某种监控或管理软件)都可能有一个 cgi 脚本文件。这意味着只需安装这样的程序就足以让任何有权访问此 Web 服务器的人(在公共 Web 服务器的情况下:每个人)都可以访问该 Web 界面。
假设您刚刚安装了某种系统管理软件,该软件具有 Web 界面,形式为 cgi 文件,/usr/lib/cgi-bin
其默认密码为“1234”。更糟糕的是,这是在公共 Web 服务器上。现在,每个人都可以打开http://www.yourserver.com/cgi-bin/foowebadmin
,使用“1234”登录并更改您的 PRODUCTION 服务器的系统配置。
当然,如果您是有意使用此功能,您将会注意适当的安全/身份验证等等,一切都会好起来的。
答案3
我个人总是从 sites-enabled 目录中删除 debian 自带的默认 vhost。我还将 apache.conf 替换为适合我们环境的内容。
这些是配置文件,dpkg(apt-get 的后端)应该期望它们被更改。像 puppet 这样的工具会以一种保留“旧配置”的方式运行 apt-get,以防软件包更新其配置,如果您以交互方式运行 apt-get,它会询问您在检测到配置文件更改时该怎么做。
那是任何改变不仅仅是无法自动合并的冲突。毕竟,即使可以合并,也可能会在你的系统中产生一些你并不真正想要的配置。
为了打破口水战(抱歉,这应该在其他地方讨论,但我只是想说出来):我的观点是,即使安装了守护进程,也不应该自动启动它。对于任何像样的网站,默认配置几乎总是错误的。(是的,我知道我可以设置 dpkg 选项,这样它就不会启动,我宁愿让它成为默认设置)