Версія 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