在Ubuntu 14.04上使Apache安全

我想在家里托管一个小网站,并安装了Apache等,如下所示:

  1. sudo apt-get update
  2. sudo apt-get install tasksel
  3. sudo tasksel install lamp-server

这一切都奏效了,一切都在运行。

现在我已经习惯了与XAMPP一起开发并且我不想使用它,因为许多参考文献说它不是很安全。

所以我的问题是,现在我已经通过上面的方法安装了Apache / PHP和MySql; 默认情况下的安全级别如何?

有没有办法让它更安全,也许是一个检查清单或破坏可能建议的任何变化?

澄清:LAMP服务器将是一个实时站点,而不是开发中的站点。

我在连接到Internet的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中,检查在出现错误时不要在屏幕上打印太多日志信息(参见error handling和 /etc/php4/apache2/php.ini文件的记录部分。文件中的注释给出关于什么是最好做的很多信息)
  • 无需将MySQL服务器暴露给Internet。 默认情况下,在Ubuntu中,Mysql服务器只在localhost上侦听。 检查参数bind-address的 mysqld部分中的/etc/mysql/my.cnf 。 它应该在127.0.0.1上:

    bind-address = 127.0.0.1

  • 不要在此服务器上安装比您需要的服务更多的服务。

  • 不要忘记在到达时应用更新。
  • 不要只依赖LAMP服务器的配置,不要忘记你还要运行一个可以引入一些安全威胁的PHP应用程序(输入validation和所有这些东西,以避免在输入字段中键入SQL查询来检索从DB获得的更多信息,你会给自己,…)

这些是我头脑中的第一件事。 当然,您可以在Internet上找到更详细的指南和指南:

  • Mysql 5.5中的安全性
  • PHP中的安全性考虑
  • Apache 2.4的安全提示

这是我在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安全性是另一个主题!)