保护我网站的管理部分

时间:2010-09-19 14:41:41

标签: php linux security apache authentication

我有一个分类广告网站......

正如您可能想象的那样,作为网站管理员(管理员),我有时需要删除分类广告,编辑它们等等。

我有自己的Linux服务器,具有root访问权限。

目前我的网站有一部分包含所有管理php脚本,我用它来删除分类广告,编辑它们等等:

    /www/adm/ //Location of administrative tools

上面的这一部分今天受到使用apache2.conf文件的简单身份验证的保护:

<Directory /var/www/adm>
    AuthType Basic
    AuthName "Adm"
    AuthUserFile /path/to/password
    Require user username
</Directory>

我的问题是,这是否足以阻止外人访问我的管理工具?

因为如果有错误意图的人得到了这些工具,那将是毁灭性的。他们可以删除我的数据库中的所有记录......我确实有备份,但这意味着大量的工作......

在这种情况下通常会做什么?

我能想到的只是在我计划使用它们时上传管理脚本,然后在使用它们之后将它们从服务器中删除。

其他可能有助于您决定我应该使用哪种解决方案的信息:

  • 我只从同一台计算机上管理网站和服务器
  • IP地址是该计算机的动态
  • 我使用安全的ftp文件传输到服务器
  • 管理工具是与数据库通信的PHP代码
  • 我有IPTables防火墙设置,只允许从我自己的服务器/网站连接到数据库。
  • 我每天备份所有文件

由于

4 个答案:

答案 0 :(得分:2)

如果其他人有访问服务器的shell,你应该非常小心权限。

否则,基本的Apache身份验证是正常的,但请记住,如果您使用的是未加密的连接(而不是SSL),则您的密码将在网络上以明文形式发送,因此始终有可能被嗅探。< / p>

要启用SSL,您需要:

  1. 在您的apache上启用了mod_ssl
  2. 自签名(免费)证书
  3. 更改您的apache配置以包含SSL端口
  4. 您可以参考本教程了解如何enable SSL on Debian

答案 1 :(得分:1)

除了通常的密码保护,IP限制,SSL等之外,更好的选择是在完全独立的域上托管工具。有人可能会猜到你有example.com/admin并尝试强行进入,但在somecompletelydifferentdomain.com上托管一个简单的登录页面,没有品牌/标记将其与example.com联系起来是一个更好的防御爱好。

答案 2 :(得分:0)

Apache auth也可以通过IP地址进行限制,因此如果你有一个静态IP,使用它和密码应该是非常安全的。如果您担心攻击,我也会使用AuthDigestFile而不是AuthUserFile。

This page explains it well与基本身份验证不同,摘要身份验证始终将密码从客户端浏览器作为MD5加密字符串发送到服务器,这使得数据包嗅探器无法查看原始密码。

答案 3 :(得分:0)

如果您必须可以直接远程访问管理工具,请找到一种带外方式,以防止Web服务器在不需要时运行它们。例如,您可以在正常情况下执行chmod 000 /var/www/adm,在需要使用时将其更改为可用的内容(例如500),并在完成后返回000

最好是确保您与管理工具之间的整个路径:

  • 使用端口敲击在22以外的某个端口上启用SSH(例如,2222)。
  • 将该端口上的sshd锁定为您的要求。
  • 运行一个单独的Web服务器实例,该实例侦听80以外的端口(例如,8080),这些端口无法从外部看到,并且具有允许访问/var/www/adm的配置但限制访问仅限本地主持人。

到了使用管理工具的时候:

  • 敲开SSH端口。
  • SSH进入端口2222并建立从远程主机上的8080到服务器端口8080的隧道。
  • 使用远程浏览器访问localhost:8080并访问您的工具。服务器将看到来自本地系统的连接。