ресурс порта
Используйте ресурс аудита port 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
Примеры
Следующие примеры демонстрируют использование этого ресурса аудита 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
Сопоставители
Полный список доступных сопоставителей можно найти на странице сопоставителей.
адрес
Сопоставитель addresses проверяет, связан ли указанный адрес с портом:
its('addresses') { should include '0.0.0.0' }
be_listening
Сопоставитель be_listening проверяет, прослушивает ли порт трафик:
it { should be_listening }
идентификаторы процессов
Сопоставитель pids проверяет идентификаторы процессов (PID):
its('pids') { should cmp 27808 }
процессы
Сопоставитель processes проверяет, запущен ли указанный процесс на системе:
its('processes') { should cmp 'syslog' }
протоколы
Сопоставитель protocols проверяет интернет-протокол: ICMP ('icmp'), TCP ('tcp' или 'tcp6') или UDP ('udp' или 'udp6'):
its('protocols') { should include 'tcp' }
или для IPv6-протокола:
its('protocols') { should include 'tcp6' }
© 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/