Spec-Zone.ru › Chef 17

ssl ресурс

[редактировать на GitHub]

Используйте ssl ресурс проверки Chef InSpec, чтобы протестировать настройки SSL для указанного порта.

Доступность

Установка

Этот ресурс распространяется вместе с самим Chef InSpec. Вы можете использовать его автоматически.

Версия

Этот ресурс стал доступен в версии v1.0.0 InSpec.

Синтаксис

Блок ресурса ssl объявляет порт SSL, а затем другие свойства теста, такие как шифр и/или протокол:

describe ssl(port: #) do
  it { should be_enabled }
end

или:

describe ssl(port: #).filter('value') do
  it { should be_enabled }
end

где

  • ssl(port: #) — номер порта, например ssl(port: 443)
  • filter может принимать любые из следующих аргументов: ciphers, protocols, и handshake

Свойства

шифры

Свойство ciphers проверяет указанный шифр:

its('ciphers') { should_not eq '/rc4/i' }

или:

describe ssl(port: 443).ciphers(/rc4/i) do
  it { should_not be_enabled }
end

протоколы

Свойство protocols проверяет, какие версии протоколов (SSLv3, TLSv1.1 и т. д.) включены:

its('protocols') { should eq 'ssl2' }

или:

describe ssl(port: 443).protocols('ssl2') do
  it { should_not be_enabled }
end

Примеры

Следующие примеры демонстрируют, как использовать этот ресурс проверки аудита Chef InSpec.

Запуск примера профиля ssl-baseline

Следующий пример демонстрирует, как использовать ssl ресурс проверки аудита Chef InSpec, чтобы найти все TCP-порты в системе, включая IPv4 и IPv6. (Это частичный пример, основанный на файле ssl_text.rb в профиле ssl-baseline на GitHub.)

...

control 'tls1.2' do
  title 'Run TLS 1.2 whenever SSL is active on a port'
  impact 0.5

  sslports.each do |socket|
    proc_desc = "on node == #{command('hostname').stdout.strip} running #{socket.process.inspect} (#{socket.pid})"
    describe ssl(port: socket.port).protocols('tls1.2') do
      it(proc_desc) { should be_enabled }
      it { should be_enabled }
    end
  end
end

...

control 'rc4' do
  title 'Disable RC4 ciphers from all exposed SSL/TLS ports and versions.'
  impact 0.5

  sslports.each do |socket|
    proc_desc = "on node == #{command('hostname').stdout.strip} running #{socket.process.inspect} (#{socket.pid})"
    describe ssl(port: socket.port).ciphers(/rc4/i) do
      it(proc_desc) { should_not be_enabled }
      it { should_not be_enabled }
    end
  end
end

Существует два способа запустить пример профиля ssl-baseline для проверки SSL с помощью ресурса ssl.

Скопировать профиль:

$ git clone https://github.com/dev-sec/ssl-baseline

а затем запустить:

$ inspec exec ssl-baseline

Или выполнить профиль напрямую через URL:

$ inspec exec https://github.com/dev-sec/ssl-baseline

Сопоставители

Полный список доступных сопоставителей можно найти на нашей странице сопоставителей.

be_enabled

Сопоставитель be_enabled проверяет, включен ли SSL:

it { should be_enabled }

шифры

Сопоставитель ciphers проверяет указанный шифр:

its('ciphers') { should_not eq '/rc4/i' }

или:

describe ssl(port: 443).ciphers(/rc4/i) do
  it { should_not be_enabled }
end

протоколы

Сопоставитель protocols проверяет, какие версии протоколов (SSLv3, TLSv1.1 и т. д.) включены:

its('protocols') { should eq 'ssl2' }

или:

describe ssl(port: 443).protocols('ssl2') do
  it { should_not be_enabled }
end

Поддерживаемые протоколы:

  • ssl2
  • ssl3
  • tls1.0
  • tls1.1
  • tls1.2
  • tls1.3

© 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/ssl/

Spec-Zone.ru

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