Spec-Zone.ru › Chef 18

порт-ресурс

[править на GitHub]

Используйте ресурс проверки аудита 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/

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API