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

