Настройка SSH

Установка, настройка, эксплуатация.

Модератор: ROOT

Настройка SSH

Сообщение ROOT » 29 июл 2013, 13:07

Оглавление


 Темы 
 Изменение параметров SSH 
 О ключах 
 SSH-ключи на Windows 
 SSH-ключи на *nix 
 Agent ssh 
 Манипуляции с ключами 


 Изменение параметров SSH 
В системе FreeBSD для внесения изменений в конфигурацию сервера SSH рекомендуется использовать флаги для демона sshd. Произведём минимально достаточную настройку с использованием следующих параметров:
Код: выделить все
sshd_flags="-o PermitRootLogin=yes -o PasswordAuthentication=no -o UseDNS=no"

PermitRootLogin - разрешаем пользователю root подключаться по SSH
PasswordAuthentication - Авторизация по паролю
UseDNS - Если в сети есть настроенный DNS-сервер с обратной зоной, то можно разрешить демону SSH резолвить IP в имена. Для этого раскомментируем строку UseDNS и меняем значение на "yes"
Рекомендуемый способ изменения настроек демона SSH является применение опции sshd_flags в файле /etc/rc.conf. Крайне не рекомендую изменять опции в файле настроек демона SSH /etc/ssh/sshd_config
Затем перезапускаем службу
Код: выделить все
service sshd reload



 О ключах 
Ключ состоит из открытой и закрытой части. Открытая кладётся в домашний каталог пользователя, «которым» заходят на сервер, закрытая — в домашний каталог пользователя, который идёт на удалённый сервер.
  1. хост с которого подключаемся => приватный ключ => rsa.ppk => .ssh/config или ssh-agent
  2. хост к которому подключаемся => публичный ключ => rsa.pub => .ssh/authorized_keys
Типы ключей
RSA
RSA (аббревиатура от фамилий Rivest, Shamir и Adleman) — криптографический алгоритм с открытым ключом, основывающийся на вычислительной сложности задачи факторизации больших целых чисел.
Криптосистема RSA стала первой системой, пригодной и для шифрования, и для цифровой подписи. Алгоритм используется в большом числе криптографических приложений, включая PGP, S/MIME, TLS/SSL, IPSEC/IKE и других

DSA
DSA (англ. Digital Signature Algorithm - алгоритм цифровой подписи) — криптографический алгоритм с использованием открытого ключа для создания электронной подписи, но не для шифрования (в отличие от RSA и схемы Эль-Гамаля). Подпись создается секретно, но может быть публично проверена. Это означает, что только один субъект может создать подпись сообщения, но любой может проверить её корректность. Алгоритм основан на вычислительной сложности взятия логарифмов в конечных полях.
DSA лучше в плане производительности

ECDSA
Алгоритм цифровой подписи эллиптической кривой (ECDSA) был введен в качестве предпочтительного алгоритма аутентификации в OpenSSH 5.7. Некоторые поставщики также отключают требуемые реализации из-за потенциальных проблем с патентами. Есть два вида проблем:
Политические проблемы", достоверность кривых, подготовленных NIST, ставятся под сомнение после того, как откровения о том, что NSA охотно вставляют бэкдоры в программное обеспечение, аппаратные компоненты и опубликованные стандарты; Известные криптографы высказывали сомнения относительно того, как были разработаны кривые NIST, и добровольное заражение уже было доказано в прошлом.
'Технические проблемы", связанные с трудностью надлежащего внедрения стандарта, а также медлительностью и недостатками дизайна, снижающими безопасность в недостаточно ранних реализациях.
Обе эти проблемы лучше всего изложены в libssh curve25519. Несмотря на то, что политические проблемы все еще обсуждаются, существует четкий консенсус в отношении того, что # Ed25519 технически превосходен и поэтому должен быть предпочтительным.

Ed25519
Ed25519 был представлен в OpenSSH 6.5: «Ed25519 - это схема сигнатур эллиптической кривой, которая обеспечивает лучшую защиту, чем ECDSA и DSA, и хорошую производительность». Его главными достоинствами являются его скорость, время работы с постоянным временем (и сопротивление боковым каналам) и отсутствие туманных жестко заданных констант [8]. См. Также этот пост в блоге разработчиком Mozilla о том, как он работает. Он уже реализован во многих приложениях и библиотеках и является алгоритмом обмена ключами по умолчанию (который отличается от ключевой сигнатуры) в OpenSSH. Публичные ключи имеют постоянную длину — 256 бит, а подпись имеет размер в два раза больше.
Некоторые ключевые преимущества Ed25519:
  • Высокая скорость: Ed25519 обеспечивает быстрые операции подписи и проверки, что делает её эффективной для использования в системах, требующих высокой производительности.
  • Безопасность: Эта схема подписи основана на эллиптической кривой Curve25519, которая была разработана с учетом безопасности. Она предлагает высокий уровень защиты даже против квантовых атак (хотя полностью квантово-устойчивых алгоритмов пока не существует).
  • Малый размер ключа: Размер ключа Ed25519 составляет 256 бит, что обеспечивает хороший уровень безопасности с относительно небольшим потреблением ресурсов.
  • Устойчивость к атакам: Ed25519 проектировалась с учетом различных классов криптографических атак, включая атаки по времени и атаки на основе анализа канала.
  • Простота реализации: Алгоритм относительно прост в реализации и не требует сложных математических операций, что снижает вероятность ошибок в коде.
  • Контроль целостности: Подписи, сгенерированные с помощью Ed25519, имеют встроенные механизмы проверки целостности, что делает их более надежными в использовании.
  • Читаемость и стандарты: Ed25519 имеет ясные и широко принятые спецификации, что облегчает ее внедрение и использование в различных приложениях и протоколах.
  • Эти преимущества делают Ed25519 популярным выбором для односторонней аутентификации, защиты данных и других криптографических приложений.
Главное преимущество ключей Ed25519 на данный момент - большая скорость штатной работы при одинаковой (на известных технологиях) взломостойкости.

Однако, у него есть и некоторые недостатки:
  • Зависимость от параметров: Ed25519 требует использования заранее определенных параметров, и это может создать проблемы, если необходимо адаптировать алгоритм под неконтролируемые параметры или протоколы.
  • Использование фиксированного порядка: Хотя это часто является преимуществом, фиксированный порядок группы может быть недостатком в некоторых специфических приложениях, где может потребоваться большая гибкость.
  • Не подходит для всех приложений: В некоторых случаях, таких как системы с ограниченными ресурсами или специфические требования к высокоскоростной обработке данных, может потребоваться альтернативный алгоритм.
  • Отсутствие поддержки в устаревших системах: Хотя Ed25519 широко используется, старые системы и программные обеспечения могут не поддерживать его, что создаёт проблемы совместимости.
  • Уязвимости при неправильной реализации: Как и любой другой криптографический алгоритм, Ed25519 может быть уязвим к атакам, если он неправильно реализован или не используется соответствующим образом.
  • Требования к источникам случайных чисел: Как и многие другие криптографические алгоритмы, Ed25519 зависит от качественных генераторов случайных чисел. Ненадежные источники случайности могут привести к компрометации ключей.
Эти недостатки не уменьшают значения Ed25519 как одного из современных криптографических алгоритмов, но важно учитывать их при его использовании в конкретных приложениях.


 SSH-ключи на Windows 
Код: выделить все
putty-0.63-installer.exe

  • прописываем в переменной Path путь к каталогу с установленной программой
Код: выделить все
C:\Program Files (x86)\PuTTY

  • Запускаем ssh-keygen. Выбираем ключ SSH-2 RSA и длину 2048 бит. Жмем «Generate». Ключ готов, заполняем кодовую фразу и комментарий к нему. Сохраняем приватный ключ как rsa.ppk и публичный как rsa.pub
  • Далее необходимо скопировать наш публичный ключ на сервер.
Код: выделить все
cd C:\Program Files (x86)\PuTTY
C:\Program Files (x86)\PuTTY>pscp rsa.pub root@srv:rsa.pub

  • Ключ скопировался, теперь нужно добавить его в /root/.ssh/authorized_keys. Для этого логинимся еще раз по паролю, через putty и выполняем
Код: выделить все
ssh-keygen -i -f rsa.pub >> /root/.ssh/authorized_keys
rm rsa.pub

Теперь осталось добавить наш ключ в ssh-agent'a. После запуска он сидит в трее, чтобы добавить ключ кликаем правой кнопкой на «Add Key»
Запуск pageant почти в автоматическом режиме. После ввода парольной фразы запускается Putty с конкретным профилем.
Код: выделить все
"C:\Program Files (x86)\PuTTY\pageant" rsa.ppk -c putty.exe -load "srv-195.0.1.1"

Теперь логинимся в putty:
Код: выделить все
login as: root
Authenticating with public key "rsa-key-20080908" from agent


Настройка работы кнопок home и end при работе во FreeBSD через ssh-клиент Putty
Для решения проблемы в настройках putty (Connection / Data / Terminal-type string) нужно поставить putty вместо xterm. Это позволит использовать описание терминала putty, которое уже присутствует в termcap из состава FreeBSD.
Для проверки отсутствия возможности аутентификации по паролю можно воспользоваться дополнительной опцией
Код: выделить все
ssh srv92 -o PubkeyAuthentication=no

Данной опцией мы запрещаем аутентификацию по ключу и смотрим на результат


 SSH-ключи на *nix системах 
Вот пара примеров генерирования ключей с помощью программы ssh-keygen.
Сначала получим пару ключей с алгоритмом RSA:
Код: выделить все
ssh-keygen -t RSA -b 2048 -q -N "" -C "user@sergey.free-adm.ru"

Рекомендуется задавать нестандартную длину ключа, например 1994 или 2052. Ключи нестандартной длинны сложнее поддаются взлому.


Возможно, у вас уже есть несколько ключей на устройстве, поэтому вы можете оставить их и просто сгенерировать новый ключ Ed25519.
Таким образом, вы всё ещё сможете заходить на свои удалённые машины, постепенно, один за одним, заменяя на них свои старые
авторизованные ключи своим новым алгоритмом.
Давайте сгенерируем ключи на базе алгоритма ed25519:
Код: выделить все
ssh-keygen -o -a 100 -t ed25519 -f ~/.ssh/id_ed25519 -q -N "" -C "$HOSTNAME"

Для создания и управления ключами, предназначена программа ssh-keygen, также входящая в пакет программного обеспечения OpenSSH. Полный список опций можно как всегда посмотреть командой man ssh-keygen. Здесь приведу лишь несколько из них:
  • -t type: указывает тип создаваемого ключа, в нашем случае это Ed25519 или RSA. ssh-keygen, работает с несколькими типами ключей. Вот некоторые значения:
    • RSA 1 - для протокола SSH версии 1.
    • RSA - для протокола SSH версии 2.
    • DSA - для протокола SSH версии 2.
    • ECDSA - введен в качестве предпочтительного алгоритма аутентификации в OpenSSH 5.7.
  • -b Длина ключа в битах.
    • RSA - минимальная длина, 768 бит, длина ключа по умолчанию, 2048 бит.
    • DSA - длина 1024 бита.
  • -o : указывает сохранить приватный ключ с использованием нового OpenSSH формата вместо PEM. На самом деле, эта опция по умолчанию включена при генерации ключа Ed25519.
  • -a rounds: При сохранении закрытого ключа эта опция задает количество используемых раундов KDF. Большее число раундов приводит к замедлению проверки парольной фразы и повышению устойчивости к взлому пароля методом перебора (если ключи будут украдены). По умолчанию используется 16 раундов.
  • -i: Данная опция используется для импорта ключей из одного формата ( например ключи сгенерированные программой PuTTYgen, для Windows ), в формат OpenSSH.
  • -f : указывает имя файла для сохранения ключа. Если вы хотите, чтобы ключ подхватывался автоматически вашим SSH-агентом, то он должен быть сохранён в дефолтной директории .ssh домашней директории вашего пользователя.
  • -l: Посмотреть отпечаток секретного ключа ( fingerprint ).
  • -q: Тихий ssh-keygen.
  • -N: Обеспечивает ввод новой ключевой фразы. В "" можно указать парольную фразу, если таковая требуется. Пустые "" означает отсутствие парольной фразы в сгенерированных ключах.
  • -p: Обеспечивает ввод (старой) ключевой фразы.
  • -C comment : указывает комментарий. Он несёт исключительно информационный смысл и может содержать что угодно. Обычно он заполняется данными <login>@<hostname> того, кто сгенерировал ключ.
Распространение ключей на сервера и сетевые устройства
Копируем публичный ключ на удалённый сервер любым из перечисленных способов. Первый способ предпочтительней, поскольку ssh-copy-id иногда даёт сбои.
Код: выделить все
ssh-keygen -i -f id_rsa.pub >> /root/.ssh/authorized_keys
rm id_rsa.pub
или
ssh-copy-id root@srv92

Или использовать только указанный ключ
Код: выделить все
ssh-copy-id -i ~/.ssh/id_rsa.pub root@srv92

При возникновении ошибок добавления ключа нужно смотреть authorized_keys на предмет наличия в нём ключа от той же машины
и файл known_hosts в котором сохраняются отпечатки ключей с именами хостов.


Отладка SSH
Для диагностики проблем на стороне клиента существуют ключи -v и -vv, которые используются для вывода подробностей установки соединения. Параметр -vv выводит более детализированную информацию о ходе подключения.
Код: выделить все
ssh -v ( or -vv) ...

Диагностика на сервере включается с помощью ключа -d при запуске демона sshd из командной строки
Код: выделить все
sshd -d

Установите права 0700 на папку .ssh и 0600 на файл authorized_keys.
Код: выделить все
chmod 700 /root/.ssh
chmod 600 /root/.ssh/authorized_keys
или
chmod go-w  /home/serg/.ssh /home/serg/.ssh/authorized_keys

Внимание
Без лишения прав записи на файл authorized_keys и каталог .ssh для группы и остальных пользователей авторизация по публичному ключу РАБОТАТЬ НЕ БУДЕТ!!!



Использования SFTP
На сервере (с помощью FTP или файлового менеджера контрольной панели) создайте файл ~/.sftp/authorized_keys и поместите в него ваш публичный ключ из файла id_rsa.txt. Установите права 0700 на папку .sftp и 0600 на файл authorized_keys.


 Agent ssh 
чтобы агент запускался автоматически при входе в систему:
Код: выделить все
echo 'eval $(ssh-agent)' >> ~/.bash_profile

так же можно добавить строки для добавления ключей в агент
Код: выделить все
ssh-add ~/.ssh/main.ppk
ssh-add ~/.ssh/id_route

Если вы хотите, чтобы ssh-agent запускался автоматически вне зависимости от того, кто из пользователей входит в систему, примените эту команду к другому файлу - /etc/profile:
Код: выделить все
 echo 'eval $(ssh-agent)' >> /etc/profile

После запуска ssh-agent вам нужно будет добавить ваш закрытый ключ в его кэш. Если вы захотите, чтобы ваши закрытые ключи добавлялись автоматически при входе в систему, добавьте следующую команду в ваш ~/.bash_profile:
Код: выделить все
ssh-add -AK ~/.ssh/[your-private-key]



 Манипуляции с ключами 
Для того чтобы узнать публичный ключ ssh по приватному ключу, можно воспользоваться командой ssh-keygen со следующими параметрами:
Код: выделить все
ssh-keygen -y -f /путь/к/приватному_ключу

Вывести список всех идентификаторов открытых ключей, представленных агентом в данный момент:
Код: выделить все
ssh-add -L

Перечисляет отпечатки всех идентификаторов, которые в данный момент представляет агент.
Код: выделить все
ssh-add -l

Выбрать нужный ключ и добавить его:
Код: выделить все
ssh-add ~/.ssh/id_rsa

Для отправки конкретного SSH-ключа из агента на удаленный хост с помощью команды ssh-copy-id, вам необходимо указать путь к файлу с ключом, который вы хотите отправить.
Например, если ваш ключ находится в файле "/path/to/key.pub" и вы хотите отправить его на удаленный хост с IP-адресом "remote_host", выполните следующую команду:
Код: выделить все
ssh-copy-id -i /path/to/key.pub user@remote_host

Удалить все идентификаторы из агента.
Код: выделить все
ssh-add -D

Удаляет идентификаторы их из агента. Если ssh-add был запущен без аргументов, будут удалены ключи для идентификаторов по умолчанию. В противном случае список аргументов будет интерпретирован как список путей к файлам открытых ключей, и соответствующие ключи будут удалены из агента. Если по указанному пути не будет найден открытый ключ, ssh-add добавит .pub и повторит попытку.
Код: выделить все
ssh-add -d

Разблокировать агента
Код: выделить все
ssh-add -X

Блокировать агента с помощью пароля.
Код: выделить все
ssh-add -x

На этом практически все
Администрирование Fedora Linux + настройка сети и прочая IT-Ботва


Для желающих поддержать
Карта SB: 5469 4009 6510 2267


Лучше ужасный конец, чем ужас без конца!
Аватар пользователя
ROOT
Администратор
 
Сообщений: 432
Зарегистрирован: 01 авг 2011, 09:36
Откуда: Моск. обл., г. Железнодорожный

Вернуться в FreeBsd

Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1

cron