在我的个人 Ubuntu 计算机上安装 Lamp 后,我正在运行一个需要连接到网络来发送 SMTP 邮件的应用程序;例如,paypal 需要一个 www 地址来通知付款成功或失败...
我通过获取免费的 .tk 域名、更改路由器首选项以及将端口转发到我的计算机 IP 来解决了该问题。
这安全吗?我有一个防火墙,只限制对端口 80 的访问。这是我的个人电脑,里面有我的个人文件(/var/www 文件夹除外)。
还有更好的选择吗?
我正在考虑在 VMware Workstation 上安装 Ubuntu Server,然后将端口转发到虚拟服务器,但这可能会占用太多资源。
答案1
它将与您的 Web 服务器配置和 Web 应用程序一样安全,就像部署在“真实”Web 服务器上一样。如果 Web 服务器以 www-data 用户身份运行,您可以将主目录权限更改为 www-data 用户无法读取的内容:
cd ~
chmod 750 .
以您自己的用户名登录后运行该程序。如果没有您提供的大量信息(包括 Web 应用程序本身),则无法猜测其余内容。但是,至少这一点可以让您更加安心,因为您知道主目录中的文件不会被读取。
通过在 DOCUMENT_ROOT (/var/www/ ?) 中创建 .htaccess 文件来添加另一层,以便任何访问 Web 服务器的人都需要先提供用户名和密码。这始终可以在部署时删除。
假设您正在使用 Apache...编辑您的 Apache 配置文件以确保您添加的任何 AuthConfig 指令都能正常工作。在指定文档根目录的“Directory”指令中,确保您的 AllowOverride 语句中包含 AuthConfig:
AllowOverride AuthConfig
或者,您可以使用“全部”:
AllowOverride All
这样我们就可以将 Apache 指令放入 .htaccess 文件中。现在在网站公共部分之外的某个地方创建一个密码文件。在这里,我在 /usr/local/etc/apache/ 中创建 (-c) 一个名为 passwords 的密码文件,初始用户为 my_username。它将提示输入密码。
sudo mkdir -p /usr/local/etc/apache/
sudo htpasswd -c /usr/local/etc/apache/passwords my_username
然后在文档根目录中放置一些 Apache AuthConfig 指令。如果文档根目录是 /var/www/,则使用您喜欢的编辑器创建一个新文件名 .htaccess...
sudo vim /var/www/.htaccess
该文件的内容...
AuthType Basic
AuthName "My Web App"
AuthUserFile /usr/local/etc/apache/passwords
Require user my_username
保存。如果以 www-data 身份运行,请更改所有者和权限:
sudo chown www-data /var/www/.htaccess
sudo chmod 400 /var/www/.htaccess
现在,没有用户名和密码,任何人都无法使用 Web 服务器,而且 Web 服务器无法读取您的个人文件。不过,当 PayPal 重定向回您时,我不知道这种密码方法如何或是否有效。
我想您可以在开发 Web 应用程序的 PayPal 返回部分时根据需要将 .htaccess 移入或移出 /var/www 目录。
答案2
我认为最好了解端口转发的含义。
通常,您的路由器充当防火墙的作用,并且通常会阻止所有尝试访问您的服务器(在您的情况下是 apache)的新连接。
所以如果你不是将端口 80 从您的路由器转发到您的本地 Web 服务器,它只能从内部、从您的 LAN 上的其他用户访问。
当您转发端口 80 并注册 FQDN 时,来自 LAN 之外的其他人现在也可以访问您的服务器。
FQDN = 完全限定域名,在您的情况下 = 您的 .tk 名称。
这样做有好处,您可以运行您的邮件服务器并共享您的个人文件,但它也会将您的服务器暴露给黑客。
所以是的,这是一个(潜在的)安全漏洞。您应该查看 Apache 的安全措施并监视日志中是否存在可疑活动。
我不会过度偏执,但如果不了解如何保护您的邮件服务器和 apache 以及不学会查看日志(需要花一点时间才能了解日志中的“正常”活动是什么),我不会进行端口转发。
仔细阅读 Apache 的安全文档,不要感到不知所措,它包含大量的信息,但也不要忽略它。
一般来说,保护网络服务器的需要与服务器上数据的价值成正比,因此你不会像金融机构那样成为大目标。