Як я можу підвищити безпеку ssh? Чи можу я вимагати і ключ, і пароль?


16

У мене невелика мережа серверів, і я хотів би підвищити загальну безпеку. У мене не вистачає часу / грошей / параної, щоб створити VPN - який основний спосіб я підвищую безпеку своєї системи?

Одне може вимагати, щоб користувачі обидва надсилали свій ключ і вводили пароль. Це якось важко для google, тому що все, що стосується "пароля ssh key", - це sshing без пароля. :-)

Одна з схем, з якими я завжди хотів іграти, вимагає, щоб вхідні з'єднання надходили лише з білого списку IP-адрес dyndns. Я знаю, що деякі керівники охорони блювотні позиви при думці про ідею, але справа в тому, що це додасть дуже значної складності для використання коробки.

Що ти думаєш? Що ще там?


Ви також можете обмежити список користувачів, яким дозволено з'єднуватися за допомогою директив AllowUsers або DenyUsers. Детальніше у цій публікації .
Фред

Відповіді:


8

Логін із паролем та ключем те саме, що "просто з ключем". Під час створення ключа вас попросять ввести парольну фразу. Якщо ви залишите його порожнім, вам не запитають пароль. Якщо ви заповнюєте якусь парольну фразу, вам буде просити її кожного разу, коли ви хочете увійти.

Якщо ви стурбовані безпекою, розгляньте на цьому форумі деякі з цих порад, згадані трильйон разів:

  • Вимкнути sh логін для root
  • Дозволити доступ до ssh лише з визначених ip-адрес (iptables, hosts.allow, ...)
  • Перемістіть порт ssh на інший порт (більше невідомості, ніж безпека, але він працює)
  • Контролюйте спроби входу в систему та реагуйте відповідно
  • Постійно оновлюйте систему

І т.д.

Оновлення: див. Тут відповідь про те, як вимагати як відкритий ключ, так і пароль локальної системи з сервером OpenSSH.


Дякую за всі ваші поради, розглянемо їх. якщо обоє потрібні ключ і пароль, то якщо експлуататор з'ясує пароль (наприклад, якщо користувач використовує його в іншому місці, яке є незахищеним), вони не можуть увійти без ключа, і якщо експлуататор викраде ключ з машини користувача вони не можуть увійти, не знаючи пароля ... правда?
Джон Бачір

12
Це не те саме. Якщо вам потрібен лише ключ, сервер не може застосувати жодну політику щодо захисту пароля на ключі. Необережний користувач може мати незашифрований приватний ключ, що лежить на клієнті, що залишає ваш сервер уразливим у разі вкрадання ключа.
200_успіх

mkudlacek - я раніше не знав про hosts.allow - гугнути навколо, здається, моя бідолашна ідея не виходить так глупою, я думаю, я спробую це випробувати.
Джон Бачір

1
200_success - так чи можна вимагати і ключ, і пароль?
Джон Бачір

Я також використовую додаток DenyHosts, щоб допомогти заблокувати людей, які намагаються увійти та зазнають невдач. Гарний маленький проактивний автоматизований спосіб чорного списку людей ..
Джеймс Т Снелл

6

Однією із ідей, які мені здаються цікавими, є з’єднання портів - в основному, щоб встановити ssh-з'єднання, спочатку потрібно перевірити послідовність інших портів, перш ніж ssh-сервер підтвердить запит на з'єднання. Якщо правильна послідовність портів не використовується, відповіді немає, тому це ефективно виглядає так, що не працює запущений ssh-сервер. Послідовність портів налаштовується та може бути надана спільним користувачам; всі інші фактично не змогли б підключитися.

Я сам цього не пробував, але, як я чув (що насправді не так багато), накладні витрати незначні, і це надзвичайно знижує ваш профіль видимості.


Я б пішов з цим, якщо ви просто хочете "підвищити загальну безпеку", але, напевно, вам слід спробувати вирішити певні проблеми із безпекою.
Стефан Тіберг

Я використовую це на всіх сайтах, на які я заробляю, і це дуже ефективно.
Sirex

Хіба це не те саме, що мати пароль на 4 символи довше?
Джон Бачір

не зовсім. Там 65536 портів і 26 листів. Крім того, у вас є послідовність стукань будь-якої довжини, і ви можете обмежити повторення, використовуючи стандартні методи брандмауера. Це не безпека сама по собі, але це приємно мати.
Сірекс

а потім на 8 або 12 символів довше :-D
Джон Бачір

3

Виправлення, пов’язані з включенням безпосередньо в SSH, і безліч відповідних дискусій:

Це також можна зробити без змін, якщо сценарій підтвердження пароля поєднується з використанням параметра ForceCommandконфігурації.

Нарешті, хоча для нього не існує жодного модуля, якщо ви перенесли автентифікацію відкритого ключа до PAM, ви зможете вимагати проходження обох кроків, перш ніж PAM вважає автентифікацію успішною.


2

Просто використовуйте

RequiredAuthentications publickey, password

в , sshd_configякщо ви використовуєте SSHd від ssh.com. Ця функція недоступна в OpenSSH.


RequiredAuthenticationsце, безумовно, нестандартне розширення на OpenSSH
Хуберт Каріо

Чи знаєте ви, які реалізації sshd підтримують це?
Джон Бачір

Сервер Tectia SSH підтримує його. BTW: використовуйте @nameOfUser, відповідаючи на свої коментарі, таким чином вони будуть повідомлені про відповідь
Хуберт Каріо

Подібна функціональність підтримується в OpenSSH версії 6.2: serverfault.com/a/562899
Søren Løvborg

1

Ви також можете використовувати одноразові паролі для підвищення безпеки. Це дозволить користувачам увійти в систему з незахищеного терміналу, який може мати брелок, якщо вони раніше створили наступний пароль. Також є генератори паролів, які можна встановити навіть на старих телефонах MIDP Java, які ви постійно носите з собою.


Так, на особистому сервері я використовую маркер Yubikey на додаток до свого пароля. Маркер генерує одноразовий пароль. І те й інше потрібно пройти автентифікацію. Крім того, я дозволяю обминати пару паролів / відключення, якщо ви автентифікуєтесь із ключем SSH. Yubikey коштує дешево і є багато програмного забезпечення для інтеграції його з Pam, розширюваною системою аутентифікації Linux.
Martijn Heemels

1

Я рекомендую вам ніколи не запускати sshd, rdp або подібні послуги управління без обмеження IP-адреси. Насправді я б запропонував обмежити доступ до таких служб адміністраторам, що підключаються через VPN.


1

Що стосується вашого початкового запитання про необхідність використання ключа та пароля, якщо ви користуєтесь RHEL або CentOS 6.3, це можливо. В примітках до випуску RHEL 6.3 описують його, це справа Додаючи це в sshd_config

RequiredAuthentications2 publickey,password

0

Я дуже погоджуюся з 3molo. OpenSSH - це сервер SSH за замовчуванням для Linux та Unix. Для нас немає жодних причин змінювати це, особливо для безпеки. VPN має бути найкращим рішенням, яке може зашифрувати наш трафік та надати двоступеневу авторизацію пароля.


0

Не впевнений, чому його ніхто не згадував, але - ви повинні переконатися, що генерувати ключі довше 1024 біт за замовчуванням, що вже не вважається захищеним.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.