Hosts.deny - Perintah Linux - Perintah Unix

NAME

host_access - format fail kawalan akses tuan rumah

DESKRIPSI

Halaman manual ini menerangkan bahasa kawalan akses mudah yang berdasarkan kepada klien (nama hos / alamat, nama pengguna), dan pelayan (nama proses, nama tuan / alamat) corak. Contoh diberikan pada akhirnya. Pembaca yang tidak sabar digalakkan untuk melangkau ke bahagian EXAMPLES untuk pengenalan ringkas.

Versi lanjutan bahasa kawalan akses diterangkan dalam dokumen hosts_options (5). Sambungan diaktifkan pada masa membina program dengan membina dengan -DPROCESS_OPTIONS.

Dalam teks berikut, daemon adalah nama proses proses daemon rangkaian , dan klien adalah nama dan / atau alamat perkhidmatan yang meminta hos. Nama proses daemon rangkaian dinyatakan dalam fail konfigurasi inetd.

FILS CONTROL ACCESS

Perisian kawalan akses merujuk kepada dua fail . Carian berhenti pada perlawanan pertama:

*

Akses akan diberikan apabila pasangan (daemon, klien) sepadan dengan entri dalam fail /etc/hosts.allow .

*

Jika tidak, akses akan dinafikan apabila pasangan ( daemon , klien) sepadan dengan entri dalam fail /etc/hosts.deny .

*

Jika tidak, akses akan diberikan.

Fail kawalan akses tidak ada dianggap sebagai fail kosong . Oleh itu, kawalan akses boleh dimatikan dengan tidak menyediakan fail kawalan akses.

PERATURAN KAWALAN AKSES

Setiap fail kawalan akses mengandungi sifar atau lebih banyak baris teks. Garis-garis ini diproses mengikut susunan. Carian itu tamat apabila perlawanan dijumpai.

*

Watak barisan baru diabaikan apabila didahului oleh watak backslash. Ini membenarkan anda memecah garisan panjang supaya mereka lebih mudah untuk diedit.

*

Garis atau baris kosong yang bermula dengan watak `# 'tidak diendahkan. Ini membenarkan anda memasukkan komen dan ruang kosong supaya jadual lebih mudah dibaca.

*

Semua baris lain harus memenuhi format berikut, perkara di antara [] adalah pilihan:


daemon_list: client_list [: shell_command]

daemon_list adalah senarai satu atau lebih banyak nama proses daemon (argv [0] nilai) atau wildcard (lihat di bawah).

client_list adalah senarai satu atau lebih nama hos , alamat hos, corak atau kad liar (lihat di bawah) yang akan dipadankan dengan nama atau alamat hos pelanggan.

Borang yang lebih rumit daemon @ host dan user @ host dijelaskan dalam bahagian pada pola endpoint pelayan dan pada lookup pengguna nama pengguna, masing-masing.

Senarai elemen hendaklah dipisahkan oleh kosong dan / atau koma.

Dengan pengecualian pencarian kumpulan NIS (YP), semua pemeriksaan kawalan akses adalah tidak sensitif.

PATTERNS

Bahasa kawalan akses melaksanakan corak berikut:

*

Rentetan yang bermula dengan `. ' watak. Nama hos dipadankan jika komponen terakhir namanya sepadan dengan corak yang ditentukan. Sebagai contoh, corak `.tue.nl 'sepadan dengan nama host` wzv.win.tue.nl'.

*

Rentetan yang berakhir dengan `. ' watak. Alamat hos dipadankan jika medan angka pertama sepadan dengan rentetan yang diberikan. Sebagai contoh, corak `131,155. ' sepadan dengan alamat (hampir) setiap tuan rumah di rangkaian Eindhoven University (131.155.xx).

*

Rentetan yang bermula dengan watak `@ 'diperlakukan sebagai nama netgroup NIS (dahulu YP). Nama hos dipadankan jika ia menjadi hos kumpulan netgroup yang ditentukan. Perlawanan kumpulan kumpulan tidak disokong untuk nama proses daemon atau nama pengguna klien.

*

Ungkapan `nnnn / mmmm 'diinterpretasikan sebagai pasangan' net / mask '. Alamat hos IPv4 dipadankan jika `bersih 'bersamaan dengan bitwise DAN alamat dan` topeng'. Sebagai contoh, pola bersih / mask `131.155.72.0/255.255.254.0 'sepadan dengan setiap alamat dalam julat` 131.155.72.0' melalui `131.155.73.255 '.

*

Ungkapan dengan bentuk `[n: n: n: n: n: n: n: n] / m 'ditafsirkan sebagai pasangan` [net] / prefixlen'. Alamat hos IPv6 dipadankan jika bit `prefixlen '` bersih' sama dengan bit 'prefixlen' alamat. Sebagai contoh, corak [net] / prefixlen `[3ffe: 505: 2: 1 ::] / 64 'sepadan dengan setiap alamat dalam lingkungan` 3ffe: 505: 2: 1 ::' hingga `3ffe: 505: 1: ffff: ffff: ffff: ffff '.

*

Rentetan yang bermula dengan aksara `/ 'dianggap sebagai nama fail. Nama atau alamat hos dipadankan jika ia sepadan dengan mana-mana nama hos atau corak alamat yang disenaraikan dalam fail bernama. Format fail adalah sifar atau lebih banyak baris dengan sifar atau lebih banyak nama tuan rumah atau pola alamat yang dipisahkan oleh ruang kosong. Corak nama fail boleh digunakan di mana-mana nama hos atau corak alamat boleh digunakan.

*

Wildcard `* 'dan`?' boleh digunakan untuk memadankan nama host atau alamat IP. Kaedah padanan ini tidak boleh digunakan bersama dengan padanan `bersih / topeng ', padanan nama hos bermula dengan`.' atau padanan alamat IP yang berakhir dengan `. '.

WILDCARDS

Bahasa kawalan akses menyokong wildcards yang jelas:

SEMUA

Kad wildcard sejagat, sentiasa sepadan.

LOKAL

Memadankan mana-mana hos yang namanya tidak mengandungi watak titik.

UNKNOWN

Memadankan mana-mana pengguna yang namanya tidak diketahui, dan sepadan dengan mana-mana tuan rumah yang nama atau alamatnya tidak diketahui. Corak ini harus digunakan dengan berhati-hati: nama-nama tuan rumah mungkin tidak tersedia kerana masalah pelayan nama sementara. Alamat rangkaian tidak akan tersedia apabila perisian tidak dapat mengetahui jenis rangkaian yang dibicarakannya.

DILAKUKAN

Memadankan mana-mana pengguna yang namanya diketahui, dan sepadan dengan mana-mana tuan rumah yang nama dan alamatnya diketahui. Corak ini harus digunakan dengan berhati-hati: nama-nama tuan rumah mungkin tidak tersedia kerana masalah pelayan nama sementara. Alamat rangkaian tidak akan tersedia apabila perisian tidak dapat mengetahui jenis rangkaian yang dibicarakannya.

PARANOID

Memadankan mana-mana tuan rumah yang namanya tidak sepadan dengan alamatnya. Apabila tcpd dibina dengan -DPARANOID (mod lalai), ia jatuh permintaan dari pelanggan tersebut sebelum melihat jadual kawalan akses. Bina tanpa -DPARANOID apabila anda mahu lebih banyak kawalan ke atas permintaan tersebut.

OPERATORS

KECUALI

Penggunaan yang dimaksudkan adalah bentuk: senarai 'list_1 EXCEPT'; binaan ini sepadan dengan apa-apa yang sepadan dengan senarai_1 kecuali ia sepadan dengan senarai_2 . Operator EXCEPT boleh digunakan dalam daemon_lists dan dalam client_lists. Pengendali yang KECUALI boleh bersarang: jika bahasa kawalan akan membenarkan penggunaan tanda kurung, `a KECUALI b KECUALI c 'akan mengurai sebagai` (a KECUALI (b KECUALI c))'.

COMMANDS SHELL

Sekiranya peraturan kawalan akses yang dipadankan pertama mengandungi perintah shell, arahan itu tertakluk kepada penggantian% (lihat bahagian seterusnya). Hasilnya dilaksanakan oleh proses anak / bin / sh dengan input, output dan ralat yang bersambung ke / dev / null . Tentukan `& 'pada akhir arahan jika anda tidak mahu menunggu sehingga selesai.

Perintah Shell tidak harus bergantung kepada tetapan PATH inetd. Sebaliknya, mereka harus menggunakan nama laluan mutlak, atau mereka harus bermula dengan PATH = eksplisit apa pun.

Dokumen hosts_options (5) menerangkan bahasa alternatif yang menggunakan medan perintah shell dalam cara yang berbeza dan tidak serasi.

% EXPANSIONS

Pengembangan berikut boleh didapati di dalam perintah shell:

% a (% A)

Alamat tuan rumah klien (pelayan).

% c

Maklumat pelanggan: pengguna @ tuan rumah, alamat @ pengguna, nama tuan rumah, atau hanya alamat, bergantung kepada berapa banyak maklumat yang tersedia.

% d

Nama proses daemon (argv [0] nilai).

% h (% H)

Nama atau alamat hos klien (pelayan), jika nama hos tidak tersedia.

% n (% N)

Nama tuan rumah pelayan (pelayan) (atau "tidak diketahui" atau "paranoid").

% p

Id proses daemon.

% s

Maklumat pelayan: daemon @ host, daemon @ address, atau hanya nama daemon, bergantung pada berapa banyak maklumat yang tersedia.

% u

Nama pengguna klien (atau "tidak diketahui").

%%

Memperluas ke satu aksara `% '.

Watak dalam ekspansion% yang boleh mengelirukan shell digantikan dengan garis bawah.

PELAN TETAPAN SERVER

Untuk membezakan pelanggan dengan alamat rangkaian yang mereka sambungkan, gunakan corak bentuk:


process_name @ host_pattern: client_list ...

Corak seperti ini boleh digunakan apabila mesin mempunyai alamat internet yang berbeza dengan hostname internet yang berbeza. Penyedia perkhidmatan boleh menggunakan kemudahan ini untuk menawarkan arkib FTP, GOPHER atau WWW dengan nama internet yang mungkin termasuk dalam organisasi yang berbeza. Lihat juga pilihan `twist 'dalam dokumen hosts_options (5). Sesetengah sistem (Solaris, FreeBSD) boleh mempunyai lebih daripada satu alamat internet pada satu antara muka fizikal; dengan sistem lain anda mungkin perlu menggunakan antara muka SLIP atau PPP pseudo yang tinggal di ruang alamat rangkaian khusus.

Host_pattern mematuhi peraturan sintaks yang sama sebagai nama host dan alamat dalam konteks client_list. Biasanya, maklumat endpoint pelayan hanya tersedia dengan perkhidmatan berorientasikan sambungan.

LOOKUP USERNAME CLIENT

Apabila hos pelanggan menyokong protokol RFC 931 atau salah satu keturunannya (TAP, IDENT, RFC 1413) program pembungkus boleh mendapatkan maklumat tambahan mengenai pemilik sambungan. Maklumat nama pengguna klien, apabila tersedia, dilogkan bersama dengan nama hos klien, dan boleh digunakan untuk memadankan pola seperti:


daemon_list: ... user_pattern @ host_pattern ...

Pembungkus daemon boleh dikonfigurasikan pada masa yang dikompilasi untuk melakukan carian nama pengguna yang digariskan oleh aturan (lalai) atau untuk selalu menginterogasi tuan rumah klien. Dalam hal pemeriksaan nama pengguna yang digariskan oleh aturan, peraturan di atas akan menyebabkan nama pengguna mencari hanya apabila kedua daemon_list dan perlawanan host_pattern .

Corak pengguna mempunyai sintaks yang sama seperti corak proses daemon, jadi wildcard yang sama digunakan (keanggotaan kumpulan tidak disokong). Seseorang tidak boleh terbawa-bawa dengan mencari nama pengguna, walaupun.

*

Maklumat nama pengguna klien tidak boleh dipercayai apabila diperlukan kebanyakan, iaitu ketika sistem klien telah dikompromikan. Secara umum, SEMUA dan (UN) DIKINI adalah satu-satunya corak nama pengguna yang masuk akal.

*

Pemerhati pengguna boleh didapati hanya dengan perkhidmatan berasaskan TCP, dan hanya apabila hos pelanggan menjalankan daemon yang sesuai; dalam semua kes lain hasilnya "tidak diketahui".

*

Satu bug inti UNIX yang terkenal boleh menyebabkan kehilangan perkhidmatan apabila pengguna mencari nama dihalang oleh firewall. Dokumen README pembungkus menggambarkan prosedur untuk mengetahui jika kernel anda mempunyai pepijat ini.

*

Penggayaan pengguna boleh menyebabkan kelewatan yang ketara untuk pengguna bukan UNIX. Masa tamat lalai untuk mencari nama pengguna adalah 10 saat: terlalu pendek untuk menangani rangkaian lambat, tetapi cukup lama untuk merengsakan pengguna PC.

Carian pengguna nama terpilih boleh mengurangkan masalah terakhir. Sebagai contoh, peraturan seperti:


daemon_list: @pcnetgroup SEMUA @ SEMUA

akan memadankan ahli kumpulan komputer pc tanpa melakukan carian nama pengguna, tetapi akan melakukan carian nama pengguna dengan semua sistem lain.

MENGETAHUI ALAMAT SPOOFING ATTACKS

Kesilapan dalam penjana nombor turutan banyak pelaksanaan TCP / IP membolehkan penggodam dengan mudah menyamar sebagai tuan rumah yang dipercayai dan untuk memecah melalui, sebagai contoh, perkhidmatan shell jauh. Perkhidmatan IDENT (RFC931 dan lain-lain) boleh digunakan untuk mengesan serangan spoofing alamat hos dan lain-lain.

Sebelum menerima permintaan pelanggan, pembungkus boleh menggunakan perkhidmatan IDENT untuk mengetahui bahawa pelanggan tidak menghantar permintaan sama sekali. Apabila hos pelanggan menyediakan perkhidmatan IDENT, keputusan carian IDENT negatif (klien yang sepadan dengan `UNKNOWN @ host ') adalah bukti kukuh serangan serangan spoofing.

Hasil carian IDENT positif (pelanggan sepadan dengan `KNOWN @ host ') kurang dipercayai. Adalah mungkin bagi penceroboh untuk memalsukan sambungan pelanggan dan IDENT lookup, walaupun berbuat demikian jauh lebih sukar daripada spoofing hanya sambungan klien. Ia juga mungkin bahawa pelayan IDENT klien berbohong.

Nota: Carian IDENT tidak berfungsi dengan perkhidmatan UDP.

CONTOH

Bahasa adalah cukup fleksibel bahawa pelbagai jenis dasar kawalan akses boleh dinyatakan dengan sedikit kekecohan. Walaupun bahasa menggunakan dua jadual kawalan akses, dasar yang paling umum dapat dilaksanakan dengan salah satu jadual menjadi remeh atau bahkan kosong.

Apabila membaca contoh di bawah adalah penting untuk menyedari bahawa jadual membenarkan diimbas sebelum jadual menafikan, bahawa carian itu tamat apabila suatu pertandingan dijumpai, dan akses itu diberikan apabila tiada pertandingan ditemui sama sekali.

Contoh menggunakan nama hos dan domain. Mereka boleh diperbaiki dengan memasukkan alamat dan / atau maklumat rangkaian / netmask, untuk mengurangkan kesan kegagalan mencari pelayan nama sementara.

TERLIBAT

Dalam kes ini, akses ditolak secara lalai. Hanya hos dibenarkan sepenuhnya dibenarkan akses.

Dasar lalai (tiada akses) dilaksanakan dengan fail menafikan remeh:

/etc/hosts.deny: SEMUA: SEMUA

Ini menafikan semua perkhidmatan kepada semua tuan rumah, melainkan ia dibenarkan akses oleh entri dalam fail membenarkan.

Tuan rumah yang disahkan secara tertera disenaraikan dalam fail membenarkan. Sebagai contoh:

/etc/hosts.allow: SEMUA: LOCAL @some_netgroup
SEMUA: .foobar.edu KECUALI terminalserver.foobar.edu

Peraturan pertama membenarkan akses daripada tuan rumah dalam domain setempat (tiada `. 'Di nama tuan rumah) dan dari beberapa kumpulan netgroup beberapa_netgroup. Peraturan kedua membenarkan akses dari semua tuan rumah di domain foobar.edu (notis titik utama), kecuali terminalserver.foobar.edu .

TERBAIK DIBUKA

Di sini, akses diberikan secara lalai; hanya hos yang dinyatakan secara jelas ditolak perkhidmatan.

Dasar lalai (akses yang diberikan) menjadikan fail membenarkan berlebihan supaya ia boleh ditinggalkan. Tuan rumah yang tidak dibenarkan secara sah disenaraikan dalam fail yang disangkal. Sebagai contoh:

/etc/hosts.deny: SEMUA: some.host.name, .some.domain
SEMUA KECUALI in.fingerd: other.host.name, .other.domain

Peraturan pertama menafikan sesetengah tuan rumah dan domain semua perkhidmatan; peraturan kedua masih membenarkan permintaan jari dari tuan rumah dan domain lain.

TRAP BOOBY

Contoh seterusnya membenarkan permintaan tftp daripada tuan rumah dalam domain setempat (notis titik utama). Permintaan daripada mana-mana tuan rumah lain ditolak. Daripada fail yang diminta, siasatan jari dihantar ke hos yang menyinggung. Hasilnya dihantar kepada superuser.

/etc/hosts.allow:

in.tftpd: LOCAL, .my.domain /etc/hosts.deny: in.tftpd: ALL: spawn (/ some / where / safe_finger -l @% h | \ / usr / ucb / mail -s% d-% h root) &

Perintah safe_finger dilengkapi dengan pembungkus tcpd dan harus dipasang di tempat yang sesuai. Ia mengehadkan kemungkinan kerosakan daripada data yang dihantar oleh pelayan jari jauh. Ia memberi perlindungan yang lebih baik daripada arahan jari standard.

Perkembangan jujukan% h (hos pelanggan) dan% d (nama perkhidmatan) diterangkan dalam bahagian pada perintah shell.

Amaran: jangan booby-perangkap daemon jari anda, melainkan anda bersedia untuk gelung jari terhingga.

Mengenai sistem firewall rangkaian trik ini boleh dibawa lebih jauh lagi. Firewall rangkaian tipikal hanya menyediakan set perkhidmatan yang terhad kepada dunia luar. Semua perkhidmatan lain boleh "diserang" seperti contoh tftp di atas. Hasilnya adalah sistem amaran awal yang sangat baik.

Penting: Gunakan arahan lelaki ( % man ) untuk melihat bagaimana arahan digunakan pada komputer tertentu anda.

artikel berkaitan