Ric*_*des 5 server lamp security firewall
在我个人的 Ubuntu 计算机上安装 Lamp 后,我正在运行一个需要连接到网络以发送 SMTP 邮件的应用程序;例如,paypal 需要一个 www 地址来通知成功或失败的付款......
我设法通过获取一个免费的 .tk 域、更改我的路由器首选项以及将端口转发到我的计算机 IP 来解决这个问题。
这安全吗?我有一个防火墙,只限制访问端口:80。这是我的个人电脑,我有个人文件(我的 /var/www 文件夹除外)。
有更好的选择吗?
我正在考虑在 VMware Workstation 上安装 Ubuntu Server,并将端口转发到虚拟服务器,但这可能会占用太多资源。
小智 7
它将与您的 Web 服务器配置和您的 Web 应用程序一样安全,就像将其部署在“真正的”Web 服务器上一样。如果 Web 服务器以 www-data 用户身份运行,您可以将主目录权限更改为 www-data 用户无法读取的内容:
cd ~
chmod 750 .
Run Code Online (Sandbox Code Playgroud)
以您自己的用户名登录时运行它。如果没有您提供的大量信息,包括 Web 应用程序本身,就无法猜测其余部分。但是,知道您的主目录中的文件不会被读取,至少这可以让您更加安心。
通过在 DOCUMENT_ROOT (/var/www/ ?) 中创建一个 .htaccess 文件来添加另一个层,这样任何访问 Web 服务器的人都需要首先提供用户名和密码。这总是可以在部署时删除。
假设您正在使用 Apache... 编辑您的 Apache 配置文件以确保您添加的任何 AuthConfig 指令都有效。在指定您的文档根目录的“目录”指令中,确保您的 AllowOverride 语句中有 AuthConfig:
AllowOverride AuthConfig
Run Code Online (Sandbox Code Playgroud)
或者,您可以使用“全部”:
AllowOverride All
Run Code Online (Sandbox Code Playgroud)
这让我们可以将 Apache 指令放在 .htaccess 文件中。现在在网站公共部分之外的某处创建一个密码文件。在这里,我使用初始用户 my_username 在 /usr/local/etc/apache/ 中创建 (-c) 一个名为 passwords 的密码文件。它会提示输入密码。
sudo mkdir -p /usr/local/etc/apache/
sudo htpasswd -c /usr/local/etc/apache/passwords my_username
Run Code Online (Sandbox Code Playgroud)
然后在文档根目录中放入一些 Apache AuthConfig 指令。如果文档根目录是 /var/www/,那么使用你喜欢的编辑器创建一个新的文件名 .htaccess...
sudo vim /var/www/.htaccess
Run Code Online (Sandbox Code Playgroud)
该文件的内容...
AuthType Basic
AuthName "My Web App"
AuthUserFile /usr/local/etc/apache/passwords
Require user my_username
Run Code Online (Sandbox Code Playgroud)
节省。更改所有者和权限,如果作为 www-data 运行:
sudo chown www-data /var/www/.htaccess
sudo chmod 400 /var/www/.htaccess
Run Code Online (Sandbox Code Playgroud)
现在没有用户名和密码,任何人都无法使用Web服务器,而且Web服务器无法读取您的个人文件。但是,当 PayPal 重定向回您时,我不知道此密码方法如何或是否可行。
我想您可以在开发 Web 应用程序的 PayPal 返回部分时根据需要将 .htaccess 移入和移出 /var/www 目录。