.Htpasswd + Örnekler kullanarak sitelerimizi nasıl koruyabiliriz?

Birçok nedenden dolayı, bir web sunucusundaki belirli dizinlere veya sadece sayfamızın veya blogumuzun içeriğine, kullanıcı adı ve şifreye dayalı bir kimlik doğrulama hizmeti aracılığıyla kontrollü erişim sağlamak çok yararlı olabilir. Kısıtlı hizmetler içeren bir web sitesine girmek istediğimizde görünen tipik pencere gibi bir şeyden bahsediyorum.

Kimlik doğrulama formuyla pencere oluşturmanın birkaç yolu vardır, ancak sunucu düzeyinde ilginç bir çözüm sağlanmıştır. htpasswd. Apache tarafından kimlik doğrulama hizmetlerinde kullanılmak üzere şifreleri şifrelenmiş bir biçimde saklamak olan bir yardımcı programdır. Kullanımı, belirli dizinleri veya dosyaları http aracılığıyla yalnızca tanımlanmış kullanıcılara ve herkesin ücretsiz olarak erişmesine gerek kalmadan göstermemize izin verir.

Çok gösterişli bir konu olmadığını anlıyorum ama bazıları için faydalı olabilir. Onları can sıkıntısı ile öldürmemek için görüntüleri daha didaktik hale getirmek için kullanacağım.

Önceki hususlar: Kullanacağım Ubuntu Sunucusu 12.04.1 y Apache 2.2.22 kontrollü bir ortamda.

Başlıyoruz.

Bazılarının zaten bildiği gibi, varsayılan olarak mevcut Apache siteleri dizinde saklanır / Var / www / ve bu örnek için HTML şablonuyla bir dizin oluşturacağım ve onu .htpasswd ile korumaya çalışacağım.

Korunacak dizin / var / www / örnek / sonraki sayfayı yerleştirdiğim yer.

Sunucuda

Tarayıcıda

1. .htpasswd dosyasını oluşturacağız.

Yerleştirileceği yer önemli ve onu genel bir dizinin dışına yerleştirmek tavsiye edilenden daha fazla olabilir. Benim durumumda, kişisel klasörüme (genel bir Apache dizini olmayan) ve .htpasswd adıyla yerleştireceğim. (Önceden onu böyle adlandırmak gerekli değildir, ancak gizli olan her zaman iyidir).

Linux'ta yeni olan kullanıcılar için. Bir dizini veya dosyayı gizlemek için ismine sadece nokta (.) İle başlamak gerekir.

Aşağıdaki komutla "Luke" adını verdiğim bir web kullanıcısı için .htpasswd dosyasını oluşturuyorum.

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

Parolayı iki kez sağlamamızı isteyecek, benim durumumda "skywalker" (tırnak işaretleri olmadan) koydum. Kontrolsüz bir ortamda daha güçlü şifreler oluşturmalıyız. Linux'ta varsayılan şifreleme MD5'tir, ancak Unix'te standart bir crypt () uygulamasıdır ve 8 karakterden az şifreler için savunmasız olabilir. Şimdi BSD'de de aynı olup olmadığından şüphem var.

Komut şu yapıya sahiptir:

  • -c → dosyayı oluşturmak için
  • /home/krel/.htpasswd → dosyanın mutlak yolu.
  • Luke → kullanıcı adı (istediğiniz her şey olabilir)

Benzer şekilde, internette bunun için servisler varken kimseyi terminali kullanmaya zorlamıyorum:
http://www.web2generators.com/apache/htpasswd_generator

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

Sonucu bir metin dosyasına ve isterseniz .htpasswd adıyla kopyalıyoruz. Bu yöntemle ilgili olarak, bir sonraki paragrafta yorumladığımı okumayı bırakmayın.

Bizim durumumuzda dosyanın /home/krel/.htpasswd beklediğimiz yerde oluşturulduğunu göreceğiz. Görüntüde, bu yöntemle dosyanın, Ubuntu'da www-data olarak adlandırılan apache kullanıcısına ve grubuna ait olduğunu vurguladım. Bu önemlidir, çünkü .htpasswd'yi başka bir şekilde oluşturduysak, 644 izne sahip olduğundan emin olmalıyız.

Şimdi cesaretlerinin nasıl olduğunu göreceğiz:

Gördüğünüz gibi, kullanıcı var (Luke) ama şifre şifreli.

Bu şekilde, Luke kullanıcısı için .htpasswd'yi zaten oluşturduk ve tasarladık, sonuçta parola için bir konteynerden başka bir şey değil. "Hepsi tek bir komutla" iyi bir slogan olacaktır.

2. Apache'yi bu hizmeti sitede kullanacak ve izin verecek şekilde yapılandırın.

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

Birkaç ana makineniz varsa, bunların her biri üzerinde çalışması gerekir, benim durumumda yalnızca varsayılan olarak gelen bir tane sahibim. Bu dosyanın bir yedeğini almanın her zaman iyi olduğunu unutmayın.

Bu dosya varsayılan yapıya sahiptir:

ServerAdmin webmaster @ localhost

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

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

Belirli bir dizine erişmek için .htpasswd kullanımının belirtileceği tam olarak Virtualhost başlıkları içindedir. Bunu aşağıdaki resim göründüğü ve örneğimize uygun şekilde yapıyoruz:

İyi. Satırları açıklarım:

Korumak için dizini koymanız gerekir.

AuthType Basic

Tarayıcı ile görüşülen kullanıcı ve parola türüdür, bu durumda şifreleme olmadan Temeldir.

Başka bir müzakere türü daha var: Özet, bu kullanıcı adı ve parolayı şifreler, ancak son söz, tarayıcının söz konusu hizmeti destekleyip desteklemediğine dairdir. Özet, koklayıcılara karşı biraz daha sağlam bir uygulama olduğu söylenebilir. Sizi bu konuyu araştırmaya davet ediyorum.

AuthName "Girmeden önce kapıyı çalın."

Kullanıcıya giriş formu ile birlikte tarayıcıda görünecek bir mesajdır ve istediğimiz olabilir.

AuthUserFile /var/www/.pass/.htpasswd

.Htpasswd dosyasının yolu. Bu nedenle, .htpasswd olarak adlandırmanın bile gerekli olmadığını söylüyorum, basitçe yolu koymak aynı şekilde çalışacaktır.

Require valid-user

Bu satır, kişiselleştirilmiş şifreleri olan birden çok kullanıcı için tasarlanmıştır. Tek kullanıcı olması durumunda aşağıdaki varyant olarak özetlenebilir.

Kullanıcı el_que_sea gerektir

Benim örneğimde şunlar olabilir: Kullanıcı Luke gerektir

Ve nihayet her şeyi içine alıyoruz

Apache'yi yeniden başlatıyoruz:

# service apache2 restart

Hadi deneyelim.

Doğru şekilde kimlik doğrulaması yapmazsak 401 Hatası alırız.

Diğer taraftan, doğru kullanıcı adı ve şifreyi girersek, büyük bir rahatsızlık vermeden geçmemize izin verirdi.

Ek ipuçları.

  • Önceden oluşturulmuş bir htpasswd dosyasına daha fazla kullanıcı eklemek için bu komutu kullanabilirsiniz

htpasswd -mb /home/krel/.htpasswd Kullanıcı Şifresi

"Kullanıcı gerektir" seçeneğini belirlediyseniz ve "Geçerli kullanıcı gerektir" ayarını yapmadıysanız, yeni kullanıcıyı ve ardından bir boşlukla ayırarak öncekini eklemelisiniz. Misal:

Kullanıcı Luke Anakin gerektir

  • Kullanıcı gruplarını kullanın

Bireysel kullanıcılar yerine aşağıdaki web sitesinde gruplarla çalışmayı tercih edersek veya buna ihtiyaç duyarsak, bunu ayrıntılı olarak açıklarlar ve bu mükemmel bir makale.
http://www.juanfelipe.net/node/23

  • Ayrıca başka bir şifreleme türü de ayarlayabiliriz, örneğin: SHA

htpasswd -sb /home/krel/.htpasswd Kullanıcı Şifresi

Burada bir SHA şifresinin kaydının .htpasswd'ye nasıl yansıtılacağına dair bir resim var. Her ikisinde de "skywalker" idi.

Daha fazla bilgi edinin.

htpasswd - -help

Bu konuda daha derinlere inmek istiyorsanız, RTFM her zaman iyidir!
http://httpd.apache.org/docs/2.0/es/howto/auth.html

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

Bu PHP betiğini Granada Üniversitesi sayfasından htaccess ve htpasswd oluşturucu oluşturmak için meraklı buldum. Uygulamaya koyamadım ama sizi "akılla gözetlemeye" davet ediyorum.

Birinin ilgilenmesi durumunda bu sayfadan aldığım HTML şablonu.
http://www.templatemo.com/

Umarım bu htpasswd sunumunu beğenmişsinizdir.


Yorumunuzu bırakın

E-posta hesabınız yayınlanmayacak. Gerekli alanlar ile işaretlenmiştir *

*

*

  1. Verilerden sorumlu: Miguel Ángel Gatón
  2. Verilerin amacı: Kontrol SPAM, yorum yönetimi.
  3. Meşruiyet: Onayınız
  4. Verilerin iletilmesi: Veriler, yasal zorunluluk dışında üçüncü kişilere iletilmeyecektir.
  5. Veri depolama: Occentus Networks (AB) tarafından barındırılan veritabanı
  6. Haklar: Bilgilerinizi istediğiniz zaman sınırlayabilir, kurtarabilir ve silebilirsiniz.

  1.   krel dijo

    Şimdi yazıyı tekrar okurken küçük bir karışıklık yaptığımı fark ettim. Site yapılandırmasındaki satırları açıkladığımda, AuthUserFile'a /var/www/.pass/.htpasswd'yi ne zaman koymalıyım:
    /home/krel/.htpasswd.

    Görselde iyi ama orada benden kaçtı, makaleyi daha önce o rota ile yapmıştım ama son dakikada değiştirdim ve düzeltebilirim gibi görünüyor.

    Şimdiden özür dilerim.

  2.   Fernando dijo

    Nautilus için herhangi bir alternatif?

    1.    krel dijo

      Sanırım sorduğun şey ters gidiyor ama yine de sana cevap veriyorum.
      Cryptkeeper ile dizinleri ve buna benzer şeyleri korumanın faydalı olacağına inanıyorum.

      Dürüst olursam, cücelerden nefret ettiğim bir şey nautilus ise. Dolphin (KDE), bu tür koruma, gpg ile şifreleme vb. Şeyler için çok daha güçlüdür.

  3.   DMoz dijo

    Krel, buraya getirdiğin tüm dersler için ve özellikle çok yaygın konular olmadığın için teşekkürler ...

    Şerefe !!! ...

  4.   juancarlos dijo

    Merhaba her şey yolunda gitti ama .. krom sekmesini kapatıp başka bir tane açtığımda adresi yazıyorum ve şifre sormuyor ...

  5.   dostum dijo

    gösterişli olmadığını kim söyledi.
    Tam aradığım şeydi ve daha iyi açıklanması imkansız
    çok teşekkür ederim.
    Bir tebrik

  6.   basco7 dijo

    Merhaba, bilgiler için çok teşekkür ederim, özellikle de .htpasswd'ye birden fazla kullanıcı ekleme kısmı.

    Çok yaşa!

  7.   Muhtadi dijo

    Tebrikler, çok iyi bir makale, net ve sindirilebilir. Çok teşekkür ederim

  8.   eduardo dijo

    Kullanıcı adı ve şifreyi girdiğimde bana 500 hata veriyor

    AuthType Basic
    Kimlik Doğrulama Adı "Tocc tocc"
    AuthUserFile /var/www/html/.pass/.htpasswd
    Kullanıcı Akira gerektir

  9.   eduardo dijo

    Diğer yorumlara bakmadan yorum yaptığım için ne kadar harika oluyor perodna.
    Harika harika gönderi çalışıyor

  10.   Somnus Kıdemli dijo

    Merhaba, iyi öğretici, ancak "htpasswd" ye bir alternatif var mı? Neden linux mint 17.3 kullandığımı soruyorum ve komuta sahip değilim… onu kurmak zorunda mıyım?

  11.   Somnus Kıdemli dijo

    Tamam, anladım… sudo apt-get install apache2-utils ile yüklemem gerekiyordu

  12.   Fernando Montilla dijo

    Merhaba, mükemmel öğretici, tam olarak burada belirtildiği gibi yaptım, tek şey 2. maddede belirtilenleri yürütmek yerine:

    nano / etc / apache2 / sites-available / default

    Benim için çalıştı

    nano /etc/apache2/sites-etkin/000-default.conf

  13.   Jorge Rodrigo Torrez Aramayo dijo

    Selamlar, benim için çalışmıyor 🙁 klasörüm sunucumda görünmüyor, yani / var / 222 / html / içerik klasörümü korudum ve tarayıcıdan girdiğimde içerik klasörü görünmüyor. Yardım