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

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

За мотивами:


Вступ

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, це заборонить і його.

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

Першим кроком для цього є запис в /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

Література