Semua yang anda perlu tahu tentang kebenaran Apache Basic. Sokongan sesi dalam Perl dan PHP. Menggunakan logik dan susunan

Sebagai tambahan kepada modul ini, terdapat juga mod_authn_core dan mod_authz_core. Modul ini melaksanakan arahan teras yang menjadi teras kepada semua modul auth.

Anda mungkin juga ingin melihat Kawalan Akses, yang membincangkan pelbagai cara mengawal akses kepada pelayan anda.

pengenalan

Jika anda mempunyai maklumat di tapak web anda yang sensitif atau ditujukan hanya untuk sekumpulan kecil orang, teknik dalam artikel ini akan membantu anda memastikan bahawa orang yang melihat halaman tersebut ialah orang yang anda ingin mereka lihat.

Artikel ini melihat cara "standard" untuk melindungi bahagian tapak web anda yang kebanyakan anda akan gunakan.

nota itu:

Jika data anda benar-benar perlu selamat, pertimbangkan untuk menggunakan mod_ssl sebagai tambahan kepada sebarang pengesahan.

Prasyarat

Arahan yang dibincangkan dalam artikel ini perlu dihantar sama ada ke fail konfigurasi pelayan utama anda (biasanya di bawah ), atau dalam fail konfigurasi setiap direktori (fail htaccess).

Jika anda merancang untuk menggunakan fail .htaccess, anda perlu mempunyai konfigurasi pelayan yang membenarkan arahan pengesahan ditetapkan dalam fail ini. Ini dilakukan dengan arahan AllowOverride, yang menentukan arahan, jika ada, boleh diletakkan dalam fail konfigurasi setiap direktori.

Memandangkan kita bercakap tentang pengesahan di sini, anda memerlukan arahan AllowOverride seperti ini:

AllowOverride AuthConfig

Atau, jika anda hanya akan menentukan arahan terus dalam fail konfigurasi pelayan utama, anda sudah tentu perlu mempunyai kebenaran menulis ke fail tersebut.

Dan anda perlu tahu sedikit tentang struktur direktori pelayan anda untuk mengetahui di mana beberapa fail disimpan. Ia tidak semestinya sukar, dan saya akan cuba memikirkannya apabila kita sampai ke tahap ini.

Anda juga perlu memastikan bahawa modul mod_authn_core dan mod_authz_core sama ada telah dibina ke dalam fail binari httpd, atau dimuatkan dengan fail konfigurasi httpd.conf. Kedua-dua modul ini menyediakan arahan asas dan kefungsian, yang penting untuk konfigurasi dan penggunaan pengesahan dan kebenaran pada pelayan web.

Mendapat Pekerjaan

Berikut ialah prinsip asas untuk kata laluan melindungi direktori pada pelayan anda.

Pertama, anda perlu membuat fail kata laluan. Tepat cara anda melakukan ini bergantung pada penyedia pengesahan yang anda pilih. Lebih lanjut mengenai ini kemudian. Sebagai permulaan kita akan gunakan fail teks kata laluan.

Fail ini mesti diletakkan di tempat yang tidak boleh diakses dari Internet. Ini bermakna orang tidak boleh memuat turun fail kata laluan. Sebagai contoh, jika dokumen anda disampaikan daripada /usr/local/apache/htdocs , anda mungkin mahu meletakkan fail kata laluan dalam /usr/local/apache/passwd .

Untuk mencipta fail, gunakan utiliti htpasswd yang disediakan dengan Apache. Ini akan terletak dalam direktori bin di mana sahaja anda memasang Apache. Jika anda memasang Apache daripada pakej pihak ketiga, ini mungkin berada dalam laluan pelaksanaan anda.

Untuk membuat fail, masukkan:

htpasswd -c /usr/local/apache/passwd/passwords rbowen

Menyediakan lebih daripada satu orang dengan

Arahan di atas hanya membenarkan satu orang (khususnya, seseorang dengan nama pengguna rbowen) untuk memasuki direktori. Dalam kebanyakan kes anda akan mahukan lebih daripada satu AuthGroupFile orang. Di sinilah AuthGroupFile berada.

Jika anda ingin memasukkan lebih daripada seorang, anda perlu membuat fail kumpulan yang mengaitkan nama kumpulan dengan senarai pengguna dalam kumpulan itu. Format fail ini agak mudah dan anda boleh menciptanya menggunakan editor kegemaran anda. Kandungan fail akan kelihatan seperti ini:

Nama Kumpulan: rbowen dpitts sungo rshersey

Ia hanyalah senarai ahli kumpulan pada barisan panjang yang dipisahkan oleh ruang.

Untuk menambah pengguna pada fail kata laluan sedia ada, masukkan:

htpasswd /usr/local/apache/passwd/passwords dpitts

Anda akan mendapat jawapan yang sama seperti sebelum ini, tetapi ia akan ditambah fail sedia ada dan bukannya mencipta fail baharu. (Ini -c menjadikannya mencipta fail kata laluan baharu).

Sekarang anda perlu menukar fail atau blok .htaccess untuk kelihatan seperti ini:

AuthType Asas AuthName "Dengan Jemputan Sahaja" # Baris pilihan: AuthBasicProvider file AuthUserFile "/usr/local/apache/passwd/passwords" AuthGroupFile "/usr/local/apache/passwd/groups" Memerlukan groupName

Kini sesiapa sahaja yang tersenarai dalam GroupName dan mempunyai entri dalam fail kata laluan akan disertakan jika mereka memasukkan kata laluan yang betul.

Terdapat satu lagi cara untuk berbilang pengguna kurang spesifik tentang perkara ini. Daripada mencipta fail kumpulan anda hanya boleh menggunakan arahan berikut:

Memerlukan pengguna yang sah

Menggunakan ini dan bukannya baris Memerlukan pengguna rbowen akan membenarkan sesiapa yang disenaraikan dalam fail kata laluan untuk memasukkan kata laluan mereka dengan betul.

Masalah yang mungkin

Oleh kerana cara pengesahan Asas ditentukan, nama pengguna dan kata laluan anda mesti disahkan setiap kali anda meminta dokumen daripada pelayan. Ini berlaku walaupun anda memuat semula halaman yang sama dan untuk setiap imej pada halaman (jika ia datang dari direktori yang dilindungi). Seperti yang anda boleh bayangkan, ini melambatkan keadaan sedikit. Jumlah yang diperlahankan adalah berkadar dengan saiz fail kata laluan, kerana ia perlu membuka fail itu dan melalui senarai pengguna sehingga ia mendapat nama anda. Dan ia sepatutnya melakukan ini setiap kali halaman dimuatkan.

Akibat daripada ini ialah terdapat had praktikal untuk bilangan pengguna yang boleh anda masukkan ke dalam satu fail kata laluan. Had ini bergantung pada prestasi pelayan khusus anda, tetapi anda boleh menjangkakan kelembapan selepas menerima beberapa ratus entri dan mungkin ingin mempertimbangkan kaedah pengesahan yang berbeza sementara itu.

Penyimpanan kata laluan alternatif

Memandangkan menyimpan kata laluan dalam fail teks mempunyai masalah yang dinyatakan di atas, anda mungkin mahu menyimpan kata laluan anda di lokasi lain, seperti pangkalan data.

Menggunakan Pelbagai Pembekal

Dengan pengenalan seni bina baharu Pengesahan dan kebenaran berasaskan pembekal, anda tidak lagi terkunci daripada sebarang kaedah pengesahan atau kebenaran. Malah, sebarang bilangan pembekal boleh dicampur dan dipadankan untuk memberikan anda skim tepat yang sesuai dengan keperluan anda. Contoh berikut menggunakan kedua-dua pembekal pengesahan berasaskan fail dan LDAP.

AuthName "Private" AuthType Asas AuthBasicProvider fail ldap AuthUserFile "/usr/local/apache/passwd/passwords" AuthLDAPURL ldap://ldaphost/o=yourorg Memerlukan pengguna yang sah

Dalam contoh ini, pembekal fail akan mula-mula mencuba untuk mengesahkan pengguna. Jika ia tidak dapat mengesahkan pengguna, pembekal LDAP akan dipanggil. Ini membolehkan anda mengembangkan skop pengesahan jika organisasi anda melaksanakan berbilang kedai pengesahan. Senario pengesahan dan kebenaran lain mungkin melibatkan pencampuran satu jenis pengesahan dengan jenis kebenaran yang lain. Contohnya, pengesahan terhadap fail kata laluan yang dibenarkan terhadap direktori LDAP.

Sama seperti berbilang pembekal pengesahan boleh dilaksanakan, berbilang kaedah kebenaran boleh digunakan. Contoh ini menggunakan kebenaran kumpulan fail serta kebenaran kumpulan LDAP.

AuthName "Private" AuthType Asas AuthBasicProvider fail AuthUserFile "/usr/local/apache/passwd/passwords" AuthLDAPURL ldap://ldaphost/o=yourorg AuthGroupFile "/usr/local/apache/passwd/groups-Memerlukan kumpulan kumpulan cn=kumpulan saya,o=org anda

Untuk mengambil kebenaran lebih jauh, arahan kontena kebenaran seperti Dan benarkan logik digunakan supaya susunan kebenaran berlaku boleh dikawal sepenuhnya melalui konfigurasi. Lihat Bekas Kebenaran untuk contoh cara ia boleh digunakan.

Di samping hanya kebenaran

Menggunakan logik dan susunan

Mengawal bagaimana dan dalam urutan apa kebenaran akan digunakan telah menjadi misteri pada masa lalu. Apache 2.2 memperkenalkan mekanisme pengesahan berasaskan pembekal untuk memisahkan proses pengesahan sebenar daripada kebenaran dan kelayakan sokongan. Satu faedah sampingan ialah pembekal pengesahan boleh dikonfigurasikan dan digunakan dalam susunan tertentu, yang tidak bergantung pada susunan modul pengesahan itu sendiri dimuatkan. Mekanisme berasaskan pembekal yang sama ini juga telah dibawa ke kebenaran. Ini bermakna arahan Require bukan sahaja menentukan kaedah kebenaran yang harus digunakan, tetapi juga menentukan urutan ia dipanggil. Beberapa kaedah kebenaran dipanggil dalam susunan yang sama di mana arahan Memerlukan muncul dalam konfigurasi.

Dengan pengenalan arahan kontena kebenaran seperti Dan Konfigurasi juga mempunyai kawalan ke atas apabila kaedah kebenaran dipanggil dan kriteria yang menentukan apabila akses diberikan. Lihat Bekas Kebenaran untuk contoh cara ia boleh digunakan untuk menyatakan logik yang kompleks kebenaran.

Caching Pengesahan

Mungkin terdapat kes di mana pengesahan meletakkan beban yang tidak boleh diterima pada pembekal atau rangkaian anda. Ini berkemungkinan besar akan menjejaskan pengguna mod_authn_dbd (atau pihak ketiga/pembekal tersuai). Untuk menangani perkara ini, HTTPD 2.3/2.4 memperkenalkan penyedia caching baharu, mod_authn_socache, untuk menyimpan bukti kelayakan dan mengurangkan beban pada penyedia asal.

Ini boleh meningkatkan produktiviti dengan ketara untuk sesetengah pengguna.

Maklumat lanjut

Anda juga harus membaca dokumentasi untuk mod_auth_basic dan mod_authz_host yang mengandungi Maklumat tambahan tentang bagaimana ia berfungsi. Arahan ini juga boleh membantu memudahkan konfigurasi pengesahan tertentu.

Pelbagai sifir yang disokong oleh Apache untuk data pengesahan dijelaskan dalam bahagian "Penyulitan Kata Laluan".

Dan anda mungkin ingin melihat Kawalan Akses, yang membincangkan beberapa topik berkaitan.

Selalunya perlu untuk menyekat akses pengguna ke kawasan tertentu tapak anda. Sebagai contoh, kepada bahagian pentadbiran. Ini sering dilakukan dengan mencipta mekanisme kebenaran anda sendiri. Walau bagaimanapun, terdapat cara untuk melindungi kawasan tapak menggunakan alat pelayan dan penyemak imbas terbina dalam. Keizinan paling mudah dipanggil Apache Keizinan asas. Ini akan menjadi artikel yang panjang, jadi bersedia untuk banyak membaca. Tetapi ia akan mengandungi semua yang anda perlukan untuk bekerja dengan jenis kebenaran ini.

Bagaimana ia berfungsi

Mula-mula, kami meletakkan fail .htaccess pada pelayan. Di dalamnya kami menunjukkan zon (atau fail tertentu) yang ingin kami lindungi dengan kata laluan. Ia mungkin kelihatan seperti ini:

Asas AuthType #jenis kebenaran
Nama Auth "Nama" #nama kebenaran
#lokasi fail kata laluan
AuthUserFile /usr/host/mysite/.htpasswd
#langkau mana-mana pengguna,
#yang memasukkan nama pengguna dan kata laluan yang betul

memerlukan pengguna yang sah

Di samping itu, tapak mungkin mengandungi fail kata laluan. Ia mempunyai struktur mudah:

log masuk: kata laluan yang disulitkan
log masuk: kata laluan yang disulitkan
...

Laluan ke fail ini ditentukan dalam htaccess.

Perbualan dengan pelayan di bawah kaca pembesar

Sekarang mari kita anggap bahawa seseorang menaip alamat direktori yang dilindungi kata laluan. Apa yang akan berlaku? Inilah yang:

1. Pelayar meminta pelayan untuk halaman di http://site/secret.
Pelayan melihat bahawa halaman ini dilindungi. Ia menghantar pengepala penyemak imbas:

WWW-Authenticate: Basic realm="My Realm"
Status: 401 Tanpa kebenaran
Status HTTP: 401 Tanpa Kebenaran

Di sini mesti dikatakan bahawa zon (alam) - parameter penting. Jika anda perlu membimbing pengguna melalui beberapa zon yang dilindungi kata laluan, yang tidak semua zon yang pengguna harus mempunyai akses, maka nama zon akan menentukan sama ada pengguna log masuk ke tempat ini atau tidak.

2. Setelah menerima pengepala ini, penyemak imbas melukis borang permintaan log masuk dan kata laluan pada skrin. Jika pengguna mengklik "Batal", penyemak imbas memaparkan semua data yang mengikuti pengepala ini.

3. Jika pengguna telah memasukkan log masuk dan kata laluan, mereka dihantar ke pelayan. Dia masuk ke dalam fail dengan kata laluan dan melihat pasangan berikut di sana. Jika ia menemuinya, ia menghantar kembali halaman yang diminta oleh penyemak imbas pada awalnya. Jika tidak, ia menghantar pengepala kebenaran sekali lagi.

4. Jika pengguna memasukkan log masuk dan kata laluan yang betul, dan pelayan membalas dengan halaman yang diminta, penyemak imbas mengingati log masuk dan kata laluan yang dimasukkan untuk zon ini.

5. Kemudian, jika penyemak imbas menghantar sebarang (!!!) permintaan ke pelayan, ia melampirkan sepasang padanya - log masuk dan kata laluan. Ia kelihatan seperti ini:

Keizinan: Asas base64(log masuk:lulus)

Iaitu, pasangan log masuk-kata laluan disulitkan dalam base64. Izinkan saya menarik perhatian anda sekali lagi - log masuk dan kata laluan kini dihantar dengan sebarang permintaan pelayar. Untuk gambar, fail gaya, skrip, favico dan segala-galanya. Pada asasnya, untuk menerima setiap fail, anda perlu melalui kebenaran. Hanya penyemak imbas yang melakukan ini untuk anda.

6. Apabila pelayan menerima permintaan, ia menyemak untuk melihat sama ada ia turut disertakan dengan log masuk dan kata laluan. Jika mereka berbuat demikian, mereka segera menyemak kebenaran.

Permintaan kebenaran dalam Perl dan PHP

Kini tiba masanya untuk memikirkan cara untuk memaparkan tetingkap kebenaran Apache tidak menggunakan htaccess, tetapi menggunakan skrip dalam Perl atau PHP. Saya secara khusus meletakkan kedua-dua penyelesaian ini pada dua perbezaan bahasa di bawah satu tajuk. Kerana sekarang, mengetahui mekanik, kita boleh dengan cepat membuat kesimpulan bahawa untuk tetingkap permintaan kebenaran muncul, kita hanya perlu menghantar pengepala yang diperlukan. Inilah yang akan kita lakukan.

#Perl
print "WWW-Authenticate: Basic realm=\"My Realm\"\n";
cetak "Status: 401 Tanpa Kebenaran\n";
cetak "Status HTTP: 401 Tanpa Kebenaran\n";
cetak "Jenis kandungan: teks/html\n\nBatal";

#PHP
header("WWW-Authenticate: Basic realm=\"My Realm\"");
header("Status: 401 Tanpa Kebenaran");
header("Status HTTP: 401 Tanpa Kebenaran");
cetak "Anda mengklik Batal";

Keputusan dalam kedua-dua kes akan menjadi borang permintaan kebenaran.

Memintas kebenaran dalam Perl

Katakan pengguna telah memasukkan nama pengguna dan kata laluan. Mereka dihantar ke pelayan. Tetapi di sini masalah timbul. Hakikatnya ialah apabila Apache menerima log masuk dan kata laluan, ia mahu menyemaknya dalam fail kata laluan. Tetapi bagaimana jika log masuk dan kata laluan disimpan bukan dalam fail kata laluan, tetapi dalam pangkalan data? Dalam kes ini, anda perlu membenarkan skrip sebelum Apache melakukannya.

Kesukaran timbul: Apache tidak menghantar log masuk dan kata laluan yang dimasukkan ke dalam pembolehubah persekitaran. Iaitu, mengaksesnya dari Perl adalah bermasalah. Tetapi mungkin. Penyelesaian paling mudah ialah menggunakan mod_rewrite. Tambahkan fail htaccess baris:

Tulis SemulaEnjin dihidupkan
RewriteCond %(HTTP:Authorization) ^(.*)
RewriteRule ^(.*) —

Mereka akan menambah pembolehubah persekitaran baharu. Daripada Perl ia akan kelihatan sebagai $ENV(HTTP_CGI_AUTHORIZATION). Ia akan mengandungi pasangan kata laluan log masuk yang dikodkan dalam base64. Sudah tentu, anda perlu bermain-main sedikit untuk mengekodnya semula, tetapi itu sesuatu. Lebih-lebih lagi, sebenarnya, tidak banyak kekecohan di sana:

$ENV(HTTP_CGI_AUTHORIZATION) =~ s/asas\s+//i;
my ($REMOTE_USER,$REMOTE_PASSWD) = split(/:/,decode_base64($ENV(HTTP_CGI_AUTHORIZATION)));

Kini kami mempunyai dua pembolehubah $REMOTE_USER dan $REMOTE_PASSWD, yang mana anda boleh membenarkan penggunaan skrip, menyemak log masuk dan kata laluan dengan apa sahaja yang anda inginkan.

Memintas kebenaran dalam PHP

Sokongan sesi dalam Perl dan PHP

Antara lain, selepas kebenaran berjaya, dalam pembolehubah persekitaran akan terdapat log masuk pengguna yang dibenarkan yang memanggil skrip boleh laku. Iaitu, anda akan sentiasa tahu siapa sebenarnya yang melancarkan skrip. Log masuk terkandung dalam pembolehubah:

#perl
$ENV(REMOTE_USER)
#php
$_SERVER

Itu sahaja

Artikel itu ternyata hebat, seperti yang saya janjikan. Tetapi ia meneliti prinsip asas bagaimana kebenaran asas Apache berfungsi, dan juga mengandungi penyelesaian kepada beberapa masalah yang mungkin timbul apabila bekerja dengannya. Sejujurnya, saya menghabiskan lebih daripada satu jam mencari jawapan kepada beberapa soalan yang diselesaikan dalam artikel ini. Saya harap ia akan membantu menjimatkan masa untuk pengaturcara lain.

Pautan berkaitan

  • htaccess dan htpasswd - bagaimana untuk membenarkan Apache sahaja
  • htaccess.net.ru - tapak khusus untuk kemungkinan pengurusan pelayan menggunakan fail htaccess

Jika anda ingin membenarkan lebih daripada seorang masuk, anda perlu mencipta fail kumpulan yang mengaitkan nama kumpulan dengan senarai pengguna dalam kumpulan itu. Format fail ini agak mudah dan anda boleh menciptanya dengan kegemaran anda editor. Kandungan fail akan kelihatan seperti ini:

Nama Kumpulan: rbowen dpitts sungo rshersey

Itu hanyalah senarai ahli kumpulan dalam barisan panjang yang dipisahkan oleh ruang.

Untuk menambah pengguna pada fail kata laluan anda yang sedia ada, taip:

htpasswd /usr/local/apache/passwd/passwords dpitts

Anda akan mendapat respons yang sama seperti sebelumnya, tetapi ia akan dilampirkan pada fail sedia ada, dan bukannya membuat fail baharu. (Ia adalah -c yang menjadikannya mencipta fail kata laluan baharu).

Mod_auth_basic dan mod_authz_host yang mengandungi beberapa maklumat lanjut tentang cara ini semua berfungsi. Arahan ini juga boleh membantu dalam memudahkan konfigurasi pengesahan tertentu.

Pelbagai sifir yang disokong oleh Apache untuk data pengesahan dijelaskan dalam Penyulitan Kata Laluan.

Dan anda mungkin ingin melihat cara Kawalan Akses, yang membincangkan beberapa topik berkaitan.

Perkara pertama yang saya cuba lakukan ialah menggunakan modul Apache authnz_ldap_module, mengenai penggunaannya terdapat banyak maklumat di Internet. Pada mulanya saya berhadapan dengan fakta bahawa kebenaran gagal dan pelayan bertindak balas kepada permintaan halaman masalah dalaman. Selepas beberapa penggalian, saya menyedari bahawa ia adalah mengenai pengekodan: tempat saya ialah koi8-r, dan AD, seperti yang anda tahu, menggunakan utf8. Setelah melakar skrip kecil dalam perl, saya menukar konfigurasi Apache kepada pengekodan utf8. Selepas operasi ini saya dapat membenarkan mana-mana pengguna domain (Memerlukan pengguna yang sah), pengguna tertentu domain (Memerlukan ldap-user), tetapi atas sebab tertentu tidak dapat memberi kebenaran mengikut kumpulan. Selepas menghabiskan masa n, saya menyedari bahawa pengguna mesti berada dalam OU yang sama dengan kumpulan. Ini sangat mengejutkan saya, kerana tidak sepenuhnya jelas mengapa kebenaran aneh itu diperlukan. Mungkin saya melakukan sesuatu yang salah, tetapi akhirnya saya memutuskan untuk berhenti menggunakan modul authnz_ldap_module dan melakukan kebenaran pada asas yang lebih kurang sama seperti kebenaran Sotong, menggunakan Samba dan modul auth_ntlm_winbind_module.

Saya akan katakan dengan segera bahawa saya tidak menjumpai pakej siap sedia untuk FreeBSD dan terpaksa menggunakan apa yang saya temui di Internet, tetapi lebih lanjut mengenai perkara itu di bawah.

Untuk berjaya menyelesaikan masalah, saya perlu memasang Apache, heimdal, Samba 3 dari port dan mencari arkib di Internet dengan modul auth_ntlm_winbind_module. Jadi, mengikut urutan.

Yang pertama ialah Pemasangan Apache. Tiada apa-apa yang rumit atau mengerikan tentang ini, terutamanya apabila memasang port: buat konfigurasi dan buat pemasangan bersih.

Sekarang kita memanipulasi fail konfigurasi. Mula-mula, mari kita fahami Kerberos dengan mencipta fail /etc/krb5.conf, mengisinya dengan lebih kurang kandungan berikut:


tiket_seumur hidup = 24000
default_realm = DOMAIN.RU
dns_lookup_realm = palsu
dns_lookup_kdc = palsu


DOMAIN.RU = (
kdc = server1.domain.ru:88
kdc = server2.domain.ru:88
}


.domain.ru = DOMAIN.RU
domain.ru = DOMAIN.RU


pam = (
nyahpepijat = palsu
tiket_seumur hidup = 36000
renew_lifetime = 36000
boleh dimajukan = benar
krb4_convert = palsu
}

Saya mempunyai dua pengawal domain, masing-masing, jadi dalam bahagian alam saya menyatakan dua kdc. Perlu diingatkan juga bahawa kes surat dalam fail ini adalah sangat penting.

Fail seterusnya ialah fail tetapan Samba. Saya tidak memerlukan semua fungsi Samba, jadi saya menamakan semula fail konfigurasi lalai kepada smb.conf.old dan mencipta /usr/local/etc/smb.conf baharu:


kumpulan kerja = DOMAIN
nama netbios = svn
alam = domain.ru
rentetan pelayan = svn
hos membenarkan = 192.168 127.0.0.1

pemisah winbind =+

winbind gunakan domain lalai = ya
winbind uid = 10000-20000
winbind gid = 10000-20000
pengguna winbind enum = ya
kumpulan enum winbind = ya

templat homedir = /tmp/winnt/%D/%U
templat shell = /bin/bash

saiz log maks = 50
keselamatan = ADS
kaedah auth = winbind

pelayan kata laluan = pelayan1 pelayan2
hujung belakang passdb = smbpasswd
kes sensitif = tidak

Kini anda perlu mendapatkan tiket Kerberos menggunakan arahan kinit:

kinit –p pentadbir

Sekarang tambahkan Apache autostart (jika tidak ditambah sebelum ini) dan daemon Samba ke fail /etc/rc.conf:

apache22_enable="YA"
smbd_enable="YA"
nmbd_enable="YA"
winbindd_enable="YA"

Dan kami cuba memulakan smbd, nmbd, winbindd secara manual Sekarang kami menyemak operasi winbindd menggunakan arahan wbinfo –p, yang mana jawapan yang betul ialah "Ping untuk winbindd berjaya pada fd 4".

Langkah seterusnya ialah menambah mesin ke domain. ini operasi mudah dilaksanakan dengan arahan berikut:

net rpc join –S server1 –w DOMAIN –U pentadbir

Jadi, mesin kami kini merupakan ahli penuh domain.

Seperti yang saya katakan di atas, tidak mungkin untuk mencari modul untuk FreeBSD, tetapi modul untuk Debian ditemui. Perkara yang paling penting ialah arkib yang ditemui mengandungi fail mod_auth_ntlm_winbind.c, yang perlu disusun dan dipasang. Kami melakukannya seperti ini:

/usr/local/sbin/apxs -DAPACHE2 -c -i mod_auth_ntlm_winbind.c

Sekarang mari kita beralih ke peringkat terakhir - konfigurasi. fail konfigurasi Apache. Sebelum ini, kami mencipta direktori ujian /usr/local/www/apache22/data/test, di mana kami mencipta fail ujian index.html dengan sebarang kandungan. Jadi, kami menambah baris pemuatan untuk modul kami ke konfigurasi /usr/local/etc/apache22/httpd.conf:

LoadModule auth_ntlm_winbind_module libexec/apache22/mod_auth_ntlm_winbind.s o

dan peraturan untuk mengakses direktori ujian kami, dalam bentuk blok ini:


Indeks Pilihan FollowSymLinks
AllowOverride Tiada
Perintah benarkan, tolak
Izinkan dari semua
Nama Auth "Pengesahan NTLM"
AuthType NTLM
NTLMAuth dihidupkan
NTLMAuthHelper "/usr/local/bin/ntlm_auth --helper-protocol=squid-2.5-ntlmssp --require-membership-of= SID"
NTLMBasicAuthoritative
AuthType NTLM
memerlukan pengguna yang sah

Di mana SID ialah SID kumpulan yang memerlukan akses kepada folder ini.

Dan akhirnya, saya akan tunjukkan caranya Bantuan PowerShell cepat dapatkan SID kumpulan yang kami perlukan:

$sid = (sistem objek baharu.security.principal.NtAccount("nama_besar"))
$sid.translate() | Nilai Senarai Format

Melindungi laman web menggunakan pelayan Apache itu sendiri adalah salah satu kaedah yang paling mudah dan pada masa yang sama boleh dipercayai. Dalam kes ini, anda tidak perlu memikirkan strategi keselamatan anda secara menyeluruh, mereka bentuk dan melaksanakannya dalam kod. Di samping itu, untuk mewujudkan sistem perlindungan yang baik, anda perlu mempunyai kelayakan yang mencukupi dalam perkara ini. Menggunakan perlindungan terbina dalam pelayan WEB Apache, anda sangat memudahkan tugas anda - anda hanya perlu melakukan urutan tindakan yang mudah dan tapak anda akan dilindungi dengan secukupnya. Artikel ini akan menerangkan secara terperinci langkah dan tindakan yang perlu anda lakukan. Dan pada penghujung artikel akan ada contoh fail .htaccess.

Pengesahan asas

Artikel ini akan membincangkan yang paling mudah dan cara berpatutan keselamatan - pengesahan asas.

Komen

Pengesahan ialah proses yang mengesahkan bahawa seseorang adalah seperti yang mereka katakan. Biasanya, pengesahan melibatkan memasukkan nama pengguna dan kata laluan.

Mari kita lihat cara pengesahan asas berfungsi.
Apabila pelawat mengakses direktori yang dilindungi, pelayan Apache bertindak balas kepada permintaan dengan pengepala dengan kod 401 (pengesahan 401 diperlukan pengepala). Pelayar pelawat menerima pengepala 401 dan memaparkan tetingkap dengan medan untuk memasukkan nama pengguna dan kata laluan. Selepas memasukkan nama pengguna dan kata laluan, data ini dihantar semula ke pelayan, yang menyemak nama pengguna untuk melihat sama ada ia berada dalam senarai khas, dan kata laluan adalah betul. Jika semuanya betul, maka pelawat mendapat akses kepada sumber tersebut. Bersama dengan pengepala, nama khas yang dipanggil skop dihantar ke penyemak imbas. Pelayar cache bukan sahaja nama pengguna dan kata laluan supaya ia boleh dihantar bersama dengan setiap permintaan, tetapi juga skop. Terima kasih kepada ini, memasukkan nama dan kata laluan dalam direktori yang dilindungi hanya dilakukan sekali. Jika tidak, mereka perlu dimasukkan dengan setiap permintaan ke direktori yang dilindungi. Caching parameter pengesahan (nama, kata laluan, skop) biasanya berlaku hanya dalam satu sesi.

Komen

Pada pengesahan asas Nama pengguna dan kata laluan dihantar ke rangkaian dalam borang terbuka sepanjang keseluruhan sesi apabila pelawat bekerja dengan direktori yang dilindungi. Seorang penggodam boleh memintas maklumat ini menggunakan penganalisis rangkaian pakej. Jenis ini pengesahan tidak boleh digunakan di mana perlindungan sebenar maklumat berharga komersial diperlukan.

Komen

pelayan WEB Apache menyokong jenis perlindungan lain - pengesahan penghadaman. Semasa pengesahan digest, kata laluan tidak dihantar dalam teks yang jelas, tetapi sebagai kod cincang yang dikira menggunakan algoritma MD5. Oleh itu, kata laluan tidak boleh dipintas semasa mengimbas trafik. Tetapi, malangnya, untuk menggunakan pengesahan digest, anda perlu memasang modul khas pada pelayan - mod_auth_digest. Dan ini hanya dalam kecekapan pentadbiran pelayan. Selain itu, sehingga baru-baru ini, pengesahan ringkasan tidak disokong oleh semua jenis penyemak imbas.

Perlindungan tapak web dipermudahkan

Untuk melindungi tapak, anda perlu lakukan urutan berikut tindakan: cipta fail dengan kata laluan, salin ke pelayan, buat fail .htaccess dan juga salin ke pelayan.
Untuk mengatur perlindungan yang anda perlukan.

  1. tapak WEB dan akses FTP kepadanya.
  2. Hak untuk mencipta fail .htpaccess dan mengatur perlindungan menggunakan fail tersebut.
  3. Utiliti penjanaan kata laluan htpasswd.exe

Menyemak operasi fail .htaccess pada pelayan

Untuk menyemak sama ada anda mempunyai hak untuk mengatur perlindungan menggunakan fail .htaccess, buat fail teks bernama .htaccess (aksara pertama ialah titik, tiada sambungan).

Komen

Ia adalah mudah untuk mencipta fail .htaccess menggunakan editor terbina dalam dalam cengkerang Far, WindowsCommander, TotalCommander, dsb., serta dalam editor Notepad.

Komen

Supaya notepad tidak menggantikan secara automatik sambungan txt, dalam dialog simpan, dalam senarai juntai bawah "jenis fail", pilih pilihan "Semua fail".


nasi. Menyimpan fail .htaccess dalam notepad

Menyemak operasi .htaccess

Asas AuthType
Pentadbir AuthName
memerlukan pengguna yang sah

Kemudian, melalui akses FTP, tulis semula fail .htaccess di tapak, dalam direktori yang anda ingin lindungi.

Komen

Kesan fail .htaccess meluas bukan sahaja kepada direktori tempat fail itu berada, tetapi juga kepada semua subdirektori yang terletak di peringkat yang lebih rendah.

Seterusnya, akses direktori ini melalui penyemak imbas anda. Jika anda melindungi direktori pentadbir dan telah menyalin fail .htaccess di sana, maka untuk menyemak anda hendaklah memasukkan URL berikut dalam bar alamat penyemak imbas anda: http://www.mysite.ru/admin/.

Jika selepas ini anda digesa untuk memasukkan log masuk dan kata laluan anda, seperti dalam rajah di bawah, maka ujian itu berjaya dan anda boleh terus melindungi direktori.

nasi. Tetingkap masuk dan kata laluan


Jika anda melakukan semuanya dengan betul, tetapi tetingkap kemasukan kata laluan tidak muncul, ini bermakna tetapan pelayan melarang anda daripada menggunakan fail .htaccess untuk melindungi direktori. Untuk penyelesaian tisu ini Anda harus menghubungi pentadbiran pelayan, atau menggunakan jenis perlindungan lain.
Apabila telah ditentukan bahawa fail .htaccess berfungsi, anda harus mengalih keluar fail ujian yang anda baru tulis daripada tapak.

Komen

Jika atas sebab tertentu anda tidak boleh memadamkan fail .htaccess, kemudian buat fail .htaccess kosong dan gantikannya dengan fail pada pelayan.

Mencipta fail dengan passwords.htpasswd

Fail kata laluan dicipta oleh utiliti htpasswd.exe. Jika anda telah memasang pelayan WEB Apache pada mesin anda, maka utiliti ini terletak dalam direktori dengan dipasang Apache-makan dalam subdirektori tong sampah.

Komen

Jika anda tidak memasang Apache, anda boleh memuat turun utiliti htpasswd.exe dari pautan: .

Untuk bekerja dengan utiliti htpasswd.exe, anda memerlukan antara muka baris arahan. Program seperti Far, WindowsCommander, dsb. mempunyai antara muka baris arahan. Di sini kita akan melihat bekerja dengan baris arahan menggunakan utiliti cmd, yang disertakan dengan Windows 2000/XP, dsb.
klik "Mula" -> "Jalankan", masukkan dalam baris input cmd dan tekan okey. Tetingkap utiliti CMD akan dibuka.

nasi. Tetingkap utiliti CMD


Seterusnya, anda perlu pergi ke direktori di mana utiliti htpasswd.exe berada. Katakan pelayan Apache dipasang dalam direktori c:/Apache2, kemudian masukkan baris arahan arahan: cd../../apache2/bin dan tekan enter.


Anda telah berpindah ke direktori dengan: Apache2in. Sekarang anda perlu memberikan arahan untuk mencipta fail dengan kata laluan. Taip yang berikut ke dalam baris arahan:

Htpasswd -cm .htpasswd pentadbir

  • -cm ialah suis untuk utiliti. Kekunci c - menunjukkan perkara yang perlu dibuat fail baharu dengan kata laluan. Jika fail dengan nama yang sama sudah wujud, ia akan ditimpa. Kunci m - menentukan penyulitan menggunakan algoritma MD5.
    .htpasswd - nama fail kata laluan (anda boleh menggunakan sebarang nama).
    admin - nama pelawat yang akan dibenarkan akses ke kawasan larangan tapak.

Sebagai tindak balas, anda harus diminta untuk memasukkan kata laluan dan mengulanginya. Jika semuanya betul, mesej berikut akan dipaparkan pada penghujung: Menambah kata laluan untuk pentadbir pengguna. Dan dalam direktori c: Apache2in akan ada fail .htpasswd, yang akan mengandungi baris dengan nama pengguna dan kod cincang kata laluannya. Untuk menambah pengguna lain pada fail .htpasswd yang sama, alih keluar suis -c daripada arahan pelancaran utiliti htpasswd.exe

Htpasswd -m .htpasswd pentadbir


Komen

Jika fail dengan kata laluan belum dibuat, maka ada kemungkinan beberapa kekunci utiliti tidak disokong dalam anda sistem operasi. Sebagai contoh, kadangkala kekunci m tidak disokong. Dalam kes ini, anda perlu memasukkan htpasswd -c .htpasswd admin
Untuk melihat kunci dan parameter utiliti, masukkan htpasswd.exe /? Anda akan diberi penerangan tentang antara muka.

Jadi, fail kata laluan telah dibuat. Sekarang anda perlu menulis semula pada pelayan. Adalah sangat dinasihatkan untuk meletakkan fail dengan kata laluan di atas direktori akar tapak - di mana pelawat tidak akan mempunyai akses.
Jika ini tidak mungkin, maka fail dengan kata laluan mesti dilindungi. Ini boleh dilakukan menggunakan fail .htaccess. Untuk melindungi fail dengan kata laluan, buat fail dengan baris yang ditunjukkan dalam penyenaraian berikut.

Perlindungan fail.htpasswd


menafikan dari semua

Dan masukkannya ke dalam direktori di mana fail kata laluan anda berada. Kini pelawat tapak tidak akan dapat mengaksesnya.
Fail kata laluan telah dibuat dan dilindungi daripada akses tanpa kebenaran. Kini anda perlu mencipta fail .htaccess yang akan digunakan dalam direktori yang dilindungi.

Mencipta fail .htaccess

Arahan berikut boleh digunakan untuk melindungi direktori:

  • AuthType - Jenis pengesahan untuk digunakan. Untuk pengesahan asas arahan ini mesti ditetapkan kepada: Asas
    AuthName - Nama skop pengesahan. Teks yang membantu pelawat memahami tempat yang mereka cuba akses. Sebagai contoh, ia mungkin ditulis: "Zon persendirian. Hanya untuk pentadbir!"
    AuthUserFile - laluan ke fail kata laluan (.htpasswd).
    AuthGroupFile - laluan ke fail kumpulan, jika ia wujud.
    Memerlukan - Satu atau lebih keperluan yang mesti dipenuhi untuk mendapatkan akses ke kawasan larangan.

Contoh fail .htaccess

Asas AuthType



memerlukan pentadbir kumpulan

Arahan AuthUserFile dan AuthGroupFile harus diterangkan dengan lebih terperinci. Ia mengandungi laluan mutlak ke fail yang sepadan dari akar pelayan.

Perhatian!

Laluan relatif tidak akan berfungsi!

Anda boleh mengetahui laluan dari akar pelayan dengan bertanya kepada pentadbiran pelayan, atau anda boleh cuba mencarinya sendiri. Untuk melakukan ini, jalankan fungsi phpinfo(). Satu meja berwarna ungu akan dipaparkan pada skrin. Nilai laluan mutlak dari akar pelayan boleh dilihat dalam pembolehubah: doc_root, open_basedir, DOCUMENT_ROOT.
Arahan Require menentukan siapa yang dibenarkan akses ke kawasan larangan. Sebagai contoh,

  • memerlukan pengguna yang sah - akses dibenarkan kepada semua pengguna yang disahkan
  • memerlukan admin pengguna alex mango - akses hanya dibenarkan kepada pelawat dengan nama admin, alex, mango. Sememangnya, mereka mesti disahkan.
    AuthName "Zon peribadi. Hanya untuk pentadbir!"
    AuthUserFile /usr/host/mysite/.htpasswd
    memerlukan pengguna yang sah

    Akses hanya kepada pengguna pentadbir dan akar

    Asas AuthType
    AuthName "Zon peribadi. Hanya untuk pentadbir!"
    AuthUserFile /usr/host/mysite/.htpasswd
    memerlukan akar pentadbir pengguna

    Akses hanya kepada pengguna daripada kumpulan pentadbir

    Asas AuthType
    AuthName "Zon peribadi. Hanya untuk pentadbir!"
    AuthUserFile /usr/host/mysite/.htpasswd
    AuthGroupFile /usr/host/mysite/group
    memerlukan pentadbir kumpulan

    Menafikan akses hanya kepada fail private.zip


    Asas AuthType
    AuthName "Zon peribadi. Hanya untuk pentadbir!"
    AuthUserFile /usr/host/mysite/.htpasswd
    memerlukan pengguna yang sah