порт-ресурс
Используйте ресурс проверки аудита Chef InSpec, чтобы проверить основные свойства порта, такие как порт, процесс, если он прослушивает.
Доступность
Установка
Этот ресурс распространяется вместе с самим Chef InSpec. Вы можете использовать его автоматически.
Версия
Этот ресурс стал доступен в версии v1.0.0 InSpec.
Синтаксис
Блок ресурса port объявляет порт, а затем, в зависимости от того, что нужно проверить, процесс, протокол, идентификатор процесса и его состояние (прослушивает ли он?):
describe port(514) do
it { should be_listening }
its('processes') {should include 'syslog'}
end
где processes возвращает процессы, прослушивающие порт 514.
Фильтр может указать атрибут:
describe port.where { protocol =~ /tcp/ && port > 22 && port < 80 } do
it { should_not be_listening }
end
где
-
.where{}задаёт блок, в котором один (или несколько) атрибутов —port,address,protocol,process,pid, илиlistening?— ограничивают проверку портами, которые соответствуют этим атрибутам
Например, чтобы проверить, доступен ли SSH-демон на машине Linux через стандартный порт (22):
describe port(22) do
its('processes') { should include 'sshd' }
its('protocols') { should include 'tcp' }
its('addresses') { should include '0.0.0.0' }
end
Свойства
address
Свойство addresses проверяет, связан ли указанный адрес с портом:
its('addresses') { should include '0.0.0.0' }
be_listening
Свойство be_listening проверяет, прослушивает ли порт входящий трафик:
it { should be_listening }
pids
Свойство pids проверяет идентификаторы процессов (PID):
its('pids') { should cmp 27808 }
processes
Свойство processes проверяет, запущен ли указанный процесс на системе:
its('processes') { should cmp 'syslog' }
protocols
Свойство protocols проверяет интернет-протокол: ICMP ('icmp'), TCP ('tcp' или 'tcp6') или UDP ('udp' или 'udp6'):
its('protocols') { should include 'tcp' }
или для IPv6-протокола:
its('protocols') { should include 'tcp6' }
Примеры
В следующих примерах показано, как использовать этот ресурс проверки аудита Chef InSpec.
Проверка порта 80, прослушивающего по протоколу TCP
describe port(80) do
it { should be_listening }
its('protocols') { should cmp 'tcp' }
end
Проверка порта 80 по конкретному адресу
Конкретный адрес порта можно проверить, используя любой из следующих примеров:
describe port(80) do
it { should be_listening }
its('addresses') {should include '0.0.0.0'}
end
или:
describe port('0.0.0.0', 80) do
it { should be_listening }
end
Проверка порта 80, прослушивающего по протоколу TCP версии IPv6
describe port(80) do
it { should be_listening }
its('protocols') { should cmp 'tcp6' }
end
Проверка, что только защищённые порты принимают запросы
describe port(80) do
it { should_not be_listening }
end
describe port(443) do
it { should be_listening }
its('protocols') { should cmp 'tcp' }
end
Проверка, что порт 65432 не прослушивает
describe port(22) do
it { should be_listening }
its('protocols') { should include('tcp') }
its('protocols') { should_not include('udp') }
end
describe port(65432) do
it { should_not be_listening }
end
Сопоставители
Полный список доступных сопоставителей можно найти на нашей странице сопоставителей.
© 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/port/