如何使用.htpasswd保护我们的网站+示例

由于许多原因,通过基于用户名和密码的身份验证服务来控制对Web服务器上某些目录的访问或者仅对页面或博客内容的访问进行控制可能非常有用。 我说的是类似于我们要进入服务受限的网站时出现的典型窗口。

有几种生成带有身份验证表单的窗口的方法,但是提供了服务器级别的有趣解决方案 密码。 它是一个实用程序,其功能是以加密形式存储密码,以供Apache在身份验证服务中使用。 它的使用将使我们仅通过HTTP向特定用户显示某些目录或文件,而不必向所有人免费提供。

我知道这不是一个浮华的主题,但对某些人可能有用。 为了避免无聊地杀死他们,我将使用图像使其更具说服力。

先前的考虑:我将使用 Ubuntu Server 12.04.1 y 阿帕奇2.2.22 在受控环境中。

我们开始。

你们中有些人已经知道,默认情况下,可用的Apache站点存储在目录中 在/ var / WWW / 在此示例中,我将创建一个带有HTML模板的目录,并尝试使用.htpasswd对其进行屏蔽。

要保护的目录是 / var / www / example / 我放置下一页的位置。

在服务器上

在浏览器中

1.我们将创建.htpasswd。

它所处的位置具有重要意义,将其放置在公共目录之外可能比建议的要多。 就我而言,我会将其放置在我的个人文件夹(不是公共Apache目录)中,并将其命名为.htpasswd (先验没有必要那样称呼,但是被隐藏的总是好的)。

适用于Linux新手。 要隐藏目录或文件,只需以句点(。)开头即可。

使用以下命令,我为名为“ Luke”的Web用户创建.htpasswd文件。

# htpasswd -c /home/krel/.htpasswd Luke

它将要求我们提供两次密码,在我的情况下,我已输入“ skywalker”(不带引号)。 在不受控制的环境中,我们必须建立更强的密码。 Linux上的默认加密是MD5,但在Unix上,它是crypt()的标准实现,对于少于8个字符的密码,它很容易受到攻击。 现在出现的问题是,在BSD中是否相同。

该命令具有以下结构:

  • -c→创建文件
  • /home/krel/.htpasswd→文件的绝对路径。
  • Luke→用户名(可以是您想要的任何名称)

同样,当互联网上有服务时,我也不强迫任何人使用该终端:
http://www.web2generators.com/apache/htpasswd_generator

http://www.htaccesstools.com/htpasswd-generator/

结果将复制到文本文件中,并根据需要命名为.htpasswd。 关于这种方法,请不要停止阅读下一段中我的评论。

在我们的例子中,我们将看到文件已生成在我们期望它们位于/home/krel/.htpasswd的位置。 在图像中,我强调了使用这种方法,该文件属于apache组和用户,在Ubuntu中称为www-data。 这很重要,因为如果我们以其他任何方式生成了.htpasswd,则必须确保它具有644权限。

好吧,现在我们将看到他们的胆量是什么样的:

如您所见,有用户(Luke),但密码已加密。

这样,我们已经为用户Luke创建并设计了.htpasswd,最后,它不过是密码的容器。 “只用一个命令就可以”是一个很好的口号。

2.配置Apache以在站点上使用并允许该服务。

# nano /etc/apache2/sites-available/default

如果您有多个主机,则它们应该在每个主机上工作,在我的情况下,我只有默认情况下附带的一个。 不要忘记备份该文件总是好的。

该文件具有默认结构:

ServerAdmin网站管理员@本地主机

..................

..................

正是在Virtualhost标题内,将指定使用.htpasswd来访问特定目录。 我们这样做是因为下面的图像出现并适合我们的示例:

好。 我解释了以下几行:

您必须放置目录以进行保护。

基本进行AuthType

它是与浏览器协商的用户和密码的类型,在这种情况下,它是“基本”,没有加密。

还有另一种协商方式:摘要,即加密用户名和密码的方式,但是最后的决定权是浏览器是否支持上述服务。 可以说Digest是针对嗅探器的更健壮的实现。 我邀请您深入研究。

AuthName“进入前敲门。”

这是一条消息,它将以登录表单在浏览器中显示给用户,它可以是我们想要的任何内容。

的AuthUserFile /var/www/.pass/.htpasswd

.htpasswd文件的路径。 因此,我说甚至没有必要将其命名为.htpasswd,只需放置路径即可。

需要有效的用户

该行专为具有个性化密码的多个用户而设计。 如果是单个用户,则可以总结为以下变体。

需要用户el_que_sea

以我为例: 需要用户Luke

最后,我们用

我们重新启动apache:

# service apache2 restart

我们试试吧。

如果我们未正确验证身份,则会收到错误401。

相反,如果我们输入正确的用户名和密码,它将使我们通过,而不会带来很大的不便。

其他提示。

  • 要将更多用户添加到已创建的htpasswd文件中,可以使用此命令

htpasswd -mb /home/krel/.htpasswd用户密码

如果设置了“需要用户”而不是“需要有效用户”,则必须添加新用户,后跟前一个用户,并用空格分隔。 例:

需要用户Luke Anakin

  • 使用用户组

如果我们更愿意或需要与以下网站上的小组合作而不是个人用户,他们会详细解释,这是一篇很棒的文章。
http://www.juanfelipe.net/node/23

  • 我们还可以设置另一种加密类型,例如:SHA

htpasswd -sb /home/krel/.htpasswd用户密码

这是在.htpasswd中如何反映SHA密码注册的图像。 两者都是“天行者”。

了解更多。

htpasswd--帮助

如果您想更深入地研究这个主题,RTFM总是不错的选择!
http://httpd.apache.org/docs/2.0/es/howto/auth.html

http://httpd.apache.org/docs/2.2/misc/password_encryptions.html

格拉纳达大学(University of Granada)页面上的这个PHP脚本对我来说也很好奇,以创建htaccess和htpasswd生成器。 我尚未将其付诸实践,但我邀请您“明智地尝试”。

如果有人感兴趣,我会从此页面获得HTML模板。
http://www.templatemo.com/

希望您喜欢这个htpasswd演示文稿。


发表您的评论

您的电子邮件地址将不会被发表。 必填字段标有 *

*

*

  1. 负责数据:MiguelÁngelGatón
  2. 数据用途:控制垃圾邮件,注释管理。
  3. 合法性:您的同意
  4. 数据通讯:除非有法律义务,否则不会将数据传达给第三方。
  5. 数据存储:Occentus Networks(EU)托管的数据库
  6. 权利:您可以随时限制,恢复和删除您的信息。

  1.   克雷尔

    现在再次阅读该帖子后,我意识到自己已经一团糟。 当我解释站点配置中的内容时,在AuthUserFile中,我将/var/www/.pass/.htpasswd放在应为的位置:
    /home/krel/.htpasswd。

    在图像中,它很好,但是它使我无所适从,这是因为我以前使用该路线撰写了这篇文章,但是在最后一刻我更改了它,似乎错过了更正它。

    我事先表示歉意。

  2.   费尔南多

    鹦鹉螺的任何替代选择?

    1.    克雷尔

      您的要求我认为相反,但我仍然会回答您。
      我相信使用Cryptkeeper可以保护目录和类似内容。

      老实说,如果我讨厌侏儒是鹦鹉螺。 海豚(KDE)在保护,使用gpg进行加密等方面的功能正更加强大。

  3.   莫兹

    克雷尔(Krel),感谢您在此处带来的完整教程,尤其是不是那么常见的主题...

    干杯! ...

  4.   胡安卡洛斯

    您好,一切顺利,但是..当我关闭Chrome标签页并打开另一个标签时,我写下了地址,并且不要求输入密码...

  5.   伙伴

    谁说这不是浮华。
    这正是我想要的,更好的解释是不可能的
    非常感谢。
    问候语

  6.   巴斯科7

    您好,非常感谢您提供的信息,尤其是在.htpasswd中添加多个用户的部分。

    上帝祝福你!

  7.   莫塔迪

    恭喜,这是一篇很好的文章,清晰易懂。 非常感谢

  8.   爱德华多

    输入用户名和密码时出现500错误

    基本进行AuthType
    AuthName“ Tocc tocc”
    AuthUserFile /var/www/html/.pass/.htpasswd
    需要用户Akira

  9.   爱德华多

    在不查看其他评论的情况下,发表评论对我来说真是太好了。
    伟大的伟大作品

  10.   索马努斯高级

    嗨,不错的教程,但是“ htpasswd”可以替代吗? 我问为什么我使用linux mint 17.3,但没有命令……我必须安装它吗?

  11.   索马努斯高级

    好的,我知道了…我必须使用sudo apt-get install apache2-utils安装它

  12.   费尔南多·蒙蒂利亚

    您好,出色的教程,我完全按照此处的指示进行了操作,唯一的是,它没有执行第2点中指示的内容:

    nano / etc / apache2 /网站可用/默认

    它对我有用

    纳米/etc/apache2/sites-enabled/000-default.conf

  13.   豪尔赫·罗德里戈·托雷兹·阿拉马约

    问候,它对我不起作用🙁我的文件夹未出现在服务器上,即,我保护了/ var / 222 / html / content文件夹,并且当我从浏览器进入时,内容文件夹也未出现。 救命