
Этот модуль Puppet обеспечивает безопасные конфигурации ssh-client и ssh-server.
truecbc_required = false - true, если требуется CBC для шифров. Обычно это необходимо только в том случае, если более старые механизмы M2M должны взаимодействовать с SSH, у которых не включён ни один из настроенных безопасных шифров. CBC — это слабая альтернатива. Все, что слабее, следует избегать, и поэтому оно недоступно.weak_hmac = false - true, если требуются более слабые механизмы HMAC. Обычно это необходимо только в том случае, если более старые механизмы M2M должны взаимодействовать с SSH, у которых не включён ни один из настроенных безопасных HMAC.weak_kex = false - true, если требуются более слабые механизмы обмена ключами (KEX). Обычно это необходимо только в том случае, если более старые механизмы M2M должны взаимодействовать с SSH, у которых не включён ни один из настроенных безопасных KEX.allow_root_with_key = false - false для полного отключения входа root. Установите true, чтобы разрешить root вход через механизм на основе ключей.ports = [ 22 ] - порты, на которых ssh-server должен прослушивать соединения и к которым ssh-client должен подключатьсяlisten_to = [ "0.0.0.0" ] - один или несколько IP-адресов, на которых ssh-server должен прослушивать соединения. По умолчанию пусто, но должно быть настроено по соображениям безопасности!remote_hosts - один или несколько хостов, к которым ssh-client может подключаться. По умолчанию пусто, но должно быть настроено по соображениям безопасности!allow_tcp_forwarding = false - установите true, чтобы разрешить TCP-переадресациюallow_agent_forwarding = false - установите true, чтобы разрешить переадресацию агентаuse_pam = false для отключения аутентификации PAMclient_options = {} - задайте значения в хэше, чтобы переопределить настройки модуляserver_options = {} - задайте значения в хэше, чтобы переопределить настройки модуляПосле добавления этого модуля вы можете использовать класс:
class { 'ssh_hardening': }
Это установит ssh-server и ssh-client. Вы также можете выбрать только один из них:
class { 'ssh_hardening::server': }
class { 'ssh_hardening::client': }
Вам следует настроить основные атрибуты:
class { 'ssh_hardening::server':
"listen_to" : ["10.2.3.4"]
}
Значение по умолчанию для listen_to — 0.0.0.0. Настоятельно рекомендуется изменить это значение.
Параметры по умолчанию будут объединены с параметрами, переданными через параметры client_options и server_options.
Если параметр задан и по умолчанию, и через параметр options, последний будет иметь приоритет.
Следующий пример включит X11Forwarding, который отключён по умолчанию:
class { 'ssh_hardening':
server_options => {
'X11Forwarding' => 'yes',
},
}
Для локального тестирования вы можете использовать vagrant и Virtualbox или VMWare для запуска тестов локально. Вам потребуется установить Virtualbox и Vagrant в вашей системе. Смотрите Vagrant Downloads для получения пакета vagrant, подходящего для вашей системы. Для всех наших тестов мы используем test-kitchen. Если вы не знакомы с test-kitchen, пожалуйста, ознакомьтесь с их руководством.
Затем установите test-kitchen:
# Install dependencies
gem install bundler
bundle install
# Fetch tests
bundle exec thor kitchen:fetch-remote-tests
# Do lint checks
bundle exec rake lint
# Do spec checks
bundle exec rake spec
# fast test on one machine
bundle exec kitchen test default-ubuntu-1204
# test on Debian-based machines
bundle exec kitchen test
# for development
bundle exec kitchen create default-ubuntu-1204
bundle exec kitchen converge default-ubuntu-1204
Для получения дополнительной информации смотрите test-kitchen
Я не могу войти в свою учётную запись. Я зарегистрировал ключ клиента, но он всё равно не пускает меня.
Если вы исчерпали все типичные проблемы (брандмауэр, сеть, отсутствие ключа, неправильный ключ, отключённая учётная запись и т. д.), возможно, ваша учётная запись заблокирована. Самый быстрый способ выяснить это — посмотреть на хэш пароля вашего пользователя:
sudo grep myuser /etc/shadow
Если хэш содержит !, ваша учётная запись заблокирована:
myuser:!:16280:7:60:7:::
Правильный способ решить эту проблему — разблокировать учётную запись (passwd -u myuser). Если у пользователя нет пароля, вы можете разблокировать её через:
usermod -p "*" myuser
В качестве альтернативы, если вы собираетесь использовать PAM, вы можете включить его через use_pam = true. PAM позволит заблокированным пользователям входить с ключами.
Почему моё приложение больше не подключается через SSH?
Всегда сначала смотрите в файлы журналов и, если возможно, смотрите на согласование между клиентом и сервером, которое выполняется при подключении.
Мы видели некоторые проблемы в приложениях (на основе python и ruby), которые связаны с использованием ими устаревшего набора криптографических алгоритмов. Это конфликтует с данным модулем усиления, который сократил список шифров, кодов аутентификации сообщений (MAC) и алгоритмов обмена ключами (KEX) до более безопасного набора.
Если вы обнаружите, что этого недостаточно, вы можете активировать cbc_required для шифров, weak_hmac для MAC и weak_kex для KEX.
Лицензировано на условиях Apache License, Version 2.0 («Лицензия»); вы не можете использовать этот файл, кроме как в соответствии с Лицензией. Вы можете получить копию Лицензии по адресу
http://www.apache.org/licenses/LICENSE-2.0
Если это не требуется применимым законодательством или не согласовано в письменной форме, программное обеспечение, распространяемое по Лицензии, распространяется на основе «КАК ЕСТЬ», БЕЗ ГАРАНТИЙ ИЛИ УСЛОВИЙ ЛЮБОГО РОДА, явных или подразумеваемых. См. Лицензию для конкретного языка, регулирующего разрешения и ограничения по Лицензии.