Ресурс xinetd_conf
Используйте ресурс аудита Chef InSpec для проверки служб в /etc/xinet.d на платформах Linux и Unix. xinetd — расширенный демон сетевых служб — прослушивает все порты и загружает соответствующую программу на основе запроса. Файл xinetd.conf обычно расположен по адресу /etc/xinetd.conf и содержит список сетевых служб, связанных с портами, на которых эта служба будет прослушивать. Только включенные службы могут обрабатывать запрос; должны быть включены только службы, необходимые для системы.
Доступность
Установка
Этот ресурс распространяется вместе с самим Chef InSpec. Вы можете использовать его автоматически.
Версия
Этот ресурс впервые стал доступен в версии v1.0.0 InSpec.
Синтаксис
Блок ресурса xinetd_conf объявляет настройки, найденные в файле xinetd.conf для указанной службы:
describe xinetd_conf.services('service_name') do
it { should be_enabled } # or be_disabled
its('setting') { should eq 'value' }
end
где
-
'service_name'— это служба, расположенная в/etc/xinet.d -
('setting')— это настройка в файлеxinetd.conf -
should eq 'value'— это ожидаемое значение
Примеры
Следующие примеры показывают, как использовать этот ресурс аудита Chef InSpec.
Проверка типа сокета
Тип сетевого сокета: dgram (служба на основе датаграмм), raw (служба, требующая прямого доступа к IP-адресу), stream (служба на основе потоков) или seqpacket (служба, требующая упорядоченного пакета).
describe xinetd_conf.services('service_name') do
its('socket_types') { should include 'dgram' }
end
Проверка типа службы
Тип службы: INTERNAL (служба, предоставляемая xinetd), RPC (служба на основе RPC), TCPMUX (служба, запускаемая на известном порту TCPMUX) или UNLISTED (служба, не указанная в стандартном системном файле).
describe xinetd_conf.services('service_name') do
its('type') { should include 'RPC' }
end
Проверка службы telnet
Например, файл telnet в каталоге /etc/xinet.d содержит следующие настройки:
service telnet
{
disable = yes
flags = REUSE
socket_type = stream
wait = no
user = root
server = /usr/sbin/in.telnetd
log_on_failure += USERID
}
Некоторые примеры тестов, которые можно выполнить с этим файлом, включают:
describe xinetd_conf.services('telnet') do
it { should be_disabled }
end
и
describe xinetd_conf.services('telnet') do
its('socket_type') { should include 'stream' }
end
и
describe xinetd_conf.services('telnet') do
its('wait') { should eq 'no' }
end
Все три настройки также можно проверить в одном блоке:
describe xinetd_conf.services('telnet') do
it { should be_disabled }
its('socket_type') { should include 'stream' }
its('wait') { should eq 'no' }
end
Сопоставители
Полный список доступных сопоставителей см. на нашей странице сопоставителей.
be_enabled
Сопоставитель be_enabled проверяет, включена ли служба, указанная в /etc/xinet.d:
it { should be_enabled }
ids
Сопоставитель ids проверяет, находится ли указанная служба в /etc/xinet.d:
its('ids') { should include 'service_name' }
Например:
its('ids') { should include 'chargen-stream chargen-dgram'}
services
Сопоставитель services проверяет, указана ли заданная служба в /etc/xinet.d:
its('services') { should include 'service_name' }
socket_types
Сопоставитель socket_types проверяет, настроена ли служба, указанная в /etc/xinet.d, для использования указанного типа сокета:
its('socket_types') { should eq 'socket' }
где socket — один из dgram, raw или stream. Для службы на основе UDP:
its('socket_types') { should eq 'dgram' }
Для сокета raw (например, для службы, использующей нестандартный протокол или требующей прямого доступа к IP):
its('socket_types') { should eq 'raw' }
Для службы на основе TCP:
its('socket_types') { should eq 'stream' }
types
Сопоставитель types проверяет тип службы:
its('type') { should eq 'TYPE' }
где 'TYPE' — это INTERNAL (для службы, предоставляемой xinetd), RPC (для службы на основе вызова удалённой процедуры) или UNLISTED (для служб, не указанных в /etc/services или /etc/rpc).
wait
Сопоставитель wait проверяет, как служба обрабатывает входящие подключения.
Для типов сокетов UDP (dgram) сопоставитель wait должен проверять yes:
its('socket_types') { should eq 'dgram' }
its('wait') { should eq 'yes' }
Для типов сокетов TCP (stream) сопоставитель wait должен проверять no:
its('socket_types') { should eq 'stream' }
its('wait') { should eq 'no' }
© Chef Software, Inc.
Licensed under the Creative Commons Attribution 3.0 Unported License.
The Chef™ Mark and Chef Logo are either registered trademarks/service marks or trademarks/servicemarks of Chef, in the United States and other countries and are used with Chef Inc's permission.
We are not affiliated with, endorsed or sponsored by Chef Inc.
https://docs.chef.io/inspec/resources/xinetd_conf/