Spec-Zone.ru › Chef 18

passwd ресурс

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

Используйте passwd ресурс аудита Chef InSpec для проверки содержимого /etc/passwd, которое содержит следующую информацию для пользователей, которые могут войти в систему и/или как пользователей, владеющих запущенными процессами. Формат /etc/passwd включает:

  • Имя пользователя
  • Пароль для этого пользователя (в новых системах пароли должны храниться в /etc/shadow)
  • Идентификатор пользователя (UID), назначенный этому пользователю
  • Идентификатор группы (GID), назначенный этому пользователю
  • Дополнительная информация об этом пользователе
  • Домашний каталог этого пользователя
  • Предпочтительная командная оболочка этого пользователя

Эти записи определены как строки, разделенные двоеточием, в файле, по одной строке на пользователя:

root:x:1234:5678:additional_info:/home/dir/:/bin/bash

Доступность

Установка

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

Версия

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

Синтаксис

Блок ресурса passwd объявляет одного (или нескольких) пользователя(ей) и связанную информацию о пользователе для проверки:

describe passwd do
  its('users') { should_not include 'forbidden_user' }
end

describe passwd.uids(filter) do
  its('users') { should cmp 'root' }
  its('count') { should eq 1 }
end

где

  • homes, gids, passwords, shells, uids, и users являются допустимыми акцессорами для passwd
  • filter один (или несколько) аргументов, например: passwd.users(/name/) используется для определения фильтрации
  • filter может принимать любые из следующих аргументов: count (получает количество записей), lines (предоставляет исходные строки passwd) и params (возвращает массив карт для всех записей)

Свойства

gids

Свойство gids проверяет, совпадают ли идентификаторы групп в тесте с идентификаторами групп в /etc/passwd:

its('gids') { should include 1234 }
its('gids') { should cmp 0 }

homes

Свойство homes проверяет абсолютный путь к домашнему каталогу пользователя:

its('home') { should eq '/' }

length

Свойство length проверяет длину пароля, который появляется в /etc/passwd:

its('length') { should be <= 32 }

Этот матчер лучше всего использовать в сочетании с фильтрами. Например:

describe passwd.users('highlander') do
   its('length') { should_not be < 16 }
end

passwords

Свойство passwords проверяет, являются ли пароли

  • Зашифрованными
  • С отключенными прямыми входами, как указано звездочкой (*)
  • В файле /etc/shadow, как указано буквой x (x)

Например:

its('passwords') { should eq ['x'] }
its('passwords') { should cmp '*' }

shells

Свойство shells проверяет абсолютный путь к оболочке (или команде), к которой имеет доступ пользователь:

its('shells') { should_not include 'user' }

или для поиска всех пользователей с оболочкой nologin:

describe passwd.shells(/nologin/) do
  its('users') { should_not include 'my_login_user' }
end

uids

Свойство uids проверяет, совпадают ли идентификаторы пользователей в тесте с идентификаторами пользователей в /etc/passwd:

its('uids') { should eq ['1234', '1235'] }

или:

describe passwd.uids(0) do
  its('users') { should cmp 'root' }
  its('count') { should eq 1 }
end

users

Свойство users проверяет, совпадают ли имена пользователей в тесте с именами пользователей в /etc/passwd:

its('users') { should eq ['root', 'www-data'] }

Примеры

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

Тестирование имён пользователей и UID

describe passwd do
  its('users') { should eq ['root', 'www-data'] }
  its('uids') { should eq [0, 33] }
end

Выбор одного пользователя и проверка на множественные вхождения

describe passwd.uids(0) do
  its('users') { should cmp 'root' }
  its('count') { should eq 1 }
end

describe passwd.where { user == 'www-data' } do
  its('uids') { should cmp 33 }
  its('count') { should eq 1 }
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/passwd/

Spec-Zone.ru

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