Xinetd, hosts.allow and hosts.deny

Матеріал з docs.linux.org.ua — збірника документації з Unix/Linux українською мовою.

Перейти до: навігація, пошук

Версія 1 (альфа)

xinetd, /etc/hosts.allow i /etc/hosts.deny

За мотивами:

http://nfs.sourceforge.net/nfs-howto/server.html


Зміст

Вступ

xinetd

Суперсервер - мережевий сервіс xinetd (колись inetd) котрий приймає всі запити до сервера, що проходять мережевий екран, та запускає відповідні сервіси і передає запити їм.

/etc/hosts.allow i /etc/hosts.deny

Ці два файли визначають котрим комп'ютерам в мережі, якими сервісами можна користуватись. Кожна стрічка у файлі містить ціле правило, перелік сервісів та комп'ютерів. Коли сервер отримує запит з комп'ютера він робить наступне:

  • Спочатку перевіряється файл hosts.allow для визначення чи комп'ютер задовольняє правилу записаному тут. Якщо таке правило знаходиться доступ гарантується.
  • Якщо запит комп'ютера не задовольняє ні одному правилу в hosts.allow, сервер перевіряє файл hosts.deny і шукає чи є підходящий запис про цю машину тут. Якщо запис знаходиться то доступ забороняється.
  • Якщо запит клієнта не задовольняє ні одному запису в обох файлах доступ надається.

Встановлення xinetd

Для встановлення суперсервера в Gentoo потрібно перед збиранням системи вказати portage, щоб всі можливі пакети збирались з підтримкою TCP обоїв:

$ cat /etc/make.conf
............
USE="...tcpd xinetd..."

Таким чином xinetd встановиться, як залежність. Мережеві сервіси потрібно збирати з підтримкою tcpd, щоб вони запускались через нього, інакше вони будуть працювати як самостійні сервіси і самі прослуховуватимуть мережу.

Якщо у Вас немає xinetd – встановіть його.

# emerge sys-apps/xinetd

Налаштування xinetd

Файли конфігурації знаходяться в /etc/xinetd.conf та конфігурація сервісів у директорії /etc/xinetd.d/*

Детальніше див xinetd.conf(5)

/etc/hosts.allow i /etc/hosts.deny

TCP/IP сервіси

Файли /etc/hosts.allow, /etc/hosts.deny в основному забезпечують контроль доступу до сервісів, що запускаються суперсервером inetd таких, як telnet i vsftpd... сьогодні замість нього використовують xinetd, тому ці файли зачіпають рідко.

Записи в /etc/hosts.allow мають наступний формат:

service: host [or network/netmask] , host [or network/netmask]

Тут host є IP адрес потенційного клієнта, в деяких версіях допустимо є DNS ім'я.

Наприклад для гарантування доступу до сервісів моніторингу описаних в Моніторинг роботи системи з "клієнтського комп'ютера 10.0.0.7 у /etc/hosts.allow потрібно додати:

# BEGIN allow services for monitoring
show_hdisk.sh:10.0.0.7
show_sensors.sh:10.0.0.7
show_system.sh:10.0.0.7
show_network.sh:10.0.0.7
# END allow services for monitoring

та краще у відповідних файлах в /etc/xinet.d/* додати стрічку:

only_from               = 10.0.0.7               # IP компа що моніторить

portmapper

Першим демоном який контролює доступ до RPC сервісів (наприклад NFS) є portmapper. Цей демон просто говорить клієнтам, як знайти певний сервіс (наприклад NFS) в системі. Отже заборона доступу до portmapper є хорошим засобом обмеження доступу до сервісів, що ним надаються. Тому, що повністю не авторизований клієнт не буде знати де знайти сервіси. Але тут є дві оголоски: по-перше цього не досить коли зломщик вже знає де знаходиться потрібний йому сервіс; по друге якщо ви хочете надавати доступ до іншого сервісу через portmapper, наприклад, NIS це заборонить і його.

В загальному, щоб заборони доступу до сервісу, потрібно заборонити доступ з небажаного ІР адресу до цього сервісу.

Першим кроком для цього є запис в /etc/hosts.deny:

portmap:ALL

Але щоб врахувати попередні зауваження і заборонити також і обхідні дірки для NFS, потрібно також додати в /etc/hosts.deny:

lockd:ALL
mountd:ALL
rquotad:ALL
statd:ALL

Взагалі найкращою ідеєю для файлу /etc/hosts.deny є єдиний запис:

ALL:ALL

що означатиме заборону всіх сервісів для всіх клієнтів крім вказаних в /etc/hosts.allow. Це найкраще рішення безпеки, але при цьому не треба забувати дописувати додатковий запис кожного разу коли встановлюєте новий сервіс.

Тепер залишається пододавати необхідні записи в /etc/hosts.allow щоб забезпечити доступ, який хочемо, до необхідних сервісів.

Для забезпечення доступу з комп'ютерів 10.0.0.101, 10.0.0.102 та мережі 10.0.0.128/25 додаємо запис в /etc/hosts.allow:

portmap: 10.0.0.101, 10.0.0.102, 10.0.0.128/25

А також для NFS

lockd: 10.0.0.101, 10.0.0.102, 10.0.0.128/25
rquotad: 10.0.0.101, 10.0.0.102, 10.0.0.128/25
mountd: 10.0.0.101, 10.0.0.102, 10.0.0.128/25
statd: 10.0.0.101, 10.0.0.102, 10.0.0.128/25

Література

Особисті інструменти