我想在家里托管一个小型网站,并安装了 Apache 等,如下所示:
sudo apt-get update
sudo apt-get install tasksel
sudo tasksel install lamp-server
一切顺利,所有东西都正常运行。
现在我已经习惯使用 XAMPP 进行开发,但我不想在现场使用它,因为很多参考资料都说它不是很安全。
所以我的问题是,现在我已经通过上述方法安装了 Apache/PHP 和 MySql;默认的安全级别如何?
是否有办法使其更安全,或许可以提供一份可能建议的更改的清单或概述?
澄清:LAMP 服务器是一个实时站点,而不是开发中的站点。
答案1
我在连接到互联网的 Ubuntu 上运行自己的 LAMP 服务器,因此我始终遵循相同的准则。通常,我会检查以下内容:
- 在 Apache 中,删除文档或至少不要将其呈现到 Web 服务器上(通过删除链接
/etc/apache2/conf-enabled/apache2-doc.conf
) - 在 Apache 中,请确保不加载不必要的模块。对于 Ubuntu,这可以通过删除 中的链接来实现
/etc/apache2/mods-enabled
。每个链接指向/etc/apache2/mods-available
目录中的一个文件,该文件一次加载和配置一个模块。 - 您可能需要查看并启用
/etc/apache2/conf-available/security.conf
。他们提出了一些默认情况下未激活的安全提示: - 拒绝访问整个文件系统,但稍后明确允许的目录除外
- 修改服务器横幅,提供尽可能少的有关正在运行的软件的信息。
- 在 PHP 中,检查是否在出现错误时不会在屏幕上打印过多的日志信息(节中的参数错误处理和日志记录该
/etc/php4/apache2/php.ini
文件的注释。文件中的注释提供了大量有关如何操作的信息) 无需将 MySQL 服务器暴露给互联网。默认情况下,在 Ubuntu 中,Mysql 服务器仅在本地主机上侦听。请查看
/etc/mysql/my.cnf
本节mysqld对于参数绑定地址. 它应该在 127.0.0.1 上:绑定地址 = 127.0.0.1
请不要在此服务器上安装超出您需要的服务。
- 当他们到达时,不要忘记应用更新。
- 不要仅仅依赖 LAMP 服务器的配置,不要忘记您还必须运行可能引入一些安全威胁的 PHP 应用程序(输入验证和所有这些东西,以避免在输入字段中键入 SQL 查询来从数据库中检索更多信息,而这些信息您本应给自己,...)
这些是我首先想到的事情。当然,你可以在互联网上找到更详细的操作方法和指南:
答案2
这是我在 LAMP 设置后通常要做的事情:( for development use, not production
)
禁用 apache2 自动启动:
sudo update-rc.d apache2 disable
当你想要使用时,你可以通过以下方式启动它:
sudo service apache2 start
禁止mysql自动启动:
echo "manual" | sudo tee /etc/init/mysql.override
当你想要使用时,你可以通过以下方式启动它:
sudo service mysql start
在防火墙上阻止传入端口 80 和 3306,以确保您的 LAMP 免受入侵:
sudo iptables -A INPUT -p tcp --dport 80 -j DROP sudo iptables -A INPUT -p tcp --dport 3306 -j DROP
(事实上,我阻止了除几个关键端口之外的所有传入端口,但 Linux 安全是另一个话题!)