Защитить сервер Ubuntu OpenSSH от атак Brute Force, но без пары ключей брандмауэра или SSH? [dубликат]

У этого вопроса уже есть ответ здесь: Как закрепить SSH-сервер? 13 ответов

Я использую Ubuntu 16.04 и стараюсь упростить мою аутентификацию SSH особым образом.

Текущая ситуация:

У меня есть машина с минимальным Сервер Ubuntu я использую главным образом для передачи файлов через локальный сервер OpenSSH. Теперь у меня нет брандмауэра на этой машине по нескольким причинам, и я также избегаю использования пары ключей, поэтому я использую только пароль. Один из способов, который я оставил для защиты от нападений с применением грубой силы, и тот, который я больше всего желаю в данный момент, использует механизм, который блокирует пользователя в течение X часов, после того, как будет пробурено количество попыток.

Желаемая ситуация:

Я хочу иметь автономный механизм (то есть не как часть брандмауэра), который блокирует пользователя в течение X часов, после того, как количество попыток Y в качестве

Мой вопрос:

Знаете ли вы полезность (и конкретную конфигурацию), которая позволит мне достичь желаемой ситуации?

1
задан 12 April 2017 в 15:38

15 ответов

Вы можете сделать это с помощью Fail2ban:

sudo apt-get install fail2ban

Затем:

sudo vim /etc/fail2ban/jail.conf

отредактируйте bantime, чтобы установить желаемое время запрета

изменить maxretry, чтобы установить максимальные попытки сбоя

, как упоминалось в других комментариях, fail2ban требует iptables.

Отдельная опция - детонация порта:

Для этого требуется только iptables, практически 0 памяти и эффективно скрыть вашу службу от сканирования портов

Непосредственно отвечая на ваш вопрос, но, возможно, вы можете реализовать детонацию порта, чтобы скрыть вашу доступность службы, а не запрещать повторные попытки ,

быстрый поиск в Google показывает это: https://www.digitalocean.com/community/tutorials/how-to-configure-port-knocking-using-only-iptables-on-an-ubuntu- vps

Вы действительно нуждаетесь в iptables.

PS: Я знаю, что безопасность через безвестность - это не безопасность, но вместе с другими практиками она может помочь вам сделать более трудную задачу. [ ! d12]

4
ответ дан 22 May 2018 в 23:44
  • 1
    Ваш ответ хороший. Но, пожалуйста, отредактируйте его и используйте больше инструментов форматирования, чтобы он выглядел красиво. – pa4080 12 April 2017 в 19:44
  • 2
    Я предложил изменить для лучшего форматирования. Пожалуйста ознакомтесь. – JohnDoea 13 April 2017 в 08:32

Вам не нужно ничего устанавливать для такой защиты. Просто добавьте соответствующие правила в вашу систему iptables.

1. Правило предварительных условий:

В начале вашего набора правил разрешите возврату любого связанного трафика на сервер:

sudo iptables -A INPUT -i eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT

2. Правила обнаружения и блокировки:

Установите динамический список Badguy. Обнаруживать и DROP Плохие IP-адреса, которые используют пароли для SSH. После того, как они находятся в списке BADGUY, система сбросит все свои пакеты:

sudo iptables -A INPUT -i eth0 -m recent --update --hitcount 3 --seconds 90000 --name BADGUY_SSH -j LOG --log-prefix "SSH BAD:" --log-level info sudo iptables -A INPUT -i eth0 -m recent --update --hitcount 3 --seconds 90000 --name BADGUY_SSH -j DROP sudo iptables -A INPUT -i eth0 -p tcp -m tcp --dport 22 -m recent --set --name BADGUY_SSH -j ACCEPT В приведенном выше коде 90000 секунд (25 часов) - это время блока. Любая попытка заблокированного IP-адреса, даже не связанная с SSH (в зависимости от других правил, которые вы можете или не имеете, и порядок), сбрасывает таймер времени блока.

3. HART-обнаружения:

Ограничить количество плохих паролей для каждого соединения до 2. По умолчанию 6.

Как sudo edit /etc/ssh/sshd_config, и там установлено:

MaxAuthTries 2
4
ответ дан 31 July 2018 в 23:35

Этот ответ намеревается дать возможный путь для удовлетворения основного вопроса: защитить сервер Ubuntu OpenSSH от атак Brute Force, но без пары ключей брандмауэра или SSH?

На самом деле я предпочитаю использовать брандмауэр и SSH и нашел ответ, предоставленный Doug Smythies, для действительно полезного.

Защитить SSH с двухфакторной аутентификацией

Двухфакторная аутентификация (2FA) - это тип ответ . В этом примере 2FA подтверждают заявленную идентификацию пользователя, используя комбинацию этих двух разных компонентов:

Основанный на времени шестизначный токен код - код аутентификации. По умолчанию эти жетоны хороши в течение 30 секунд плюс дополнительно добавлено 60 секунд, чтобы компенсировать возможный временной перекос. Пароль пользователя, который сам должен быть достаточно безопасным.

На самом деле, когда вы установили PermitRootLogin no и имена пользователей выбраны хорошо, для меня этот метод можно назвать 3FA.

Кроме того, если компьютер, в который вы входите, isn Закрепленная от попыток входа в грубую силу, вы можете включить ограничение скорости для модуля аутентификации.

Начнем:

1. Установить зависимости

sudo apt-get install libpam-google-authenticator

2. Отредактируйте файлы конфигурации

Основанный на времени шестизначный токен код - код аутентификации. По умолчанию эти токены хороши в течение 30 секунд плюс дополнительно добавлено 60 секунд, чтобы компенсировать возможный временной перекос.

Основанный на времени шестизначный токен код - код аутентификации. По умолчанию эти токены хороши в течение 30 секунд плюс дополнительно добавлено 60 секунд, чтобы компенсировать возможный временной перекос.

ChallengeResponseAuthentication yes
UsePAM yes
PasswordAuthentication no           # You can leave this 'yes' it doesn't matter.

3. Активируйте двухфакторную аутентификацию для пользователя

Изменить /etc/ssh/sshd_config и изменить или добавить эти директивы:

$ google-authenticator Enter Do you want authentication tokens to be time-based (y/n) yEnter https://www.google.com/chart?chs=200x200&chld=M|0&cht=qr&chl=otpauth://totp/user@host%3Fsecret%3DE3CY3TNSNBXXXXXX Your new secret key is: E3CY3TNSNBXXXXXX Your verification code is 229999 Your emergency scratch codes are: 19999711 ... Do you want me to update your "/home/user/.google_authenticator" file (y/n) yEnter Do you want to disallow multiple uses of the same authentication token? This restricts you to one login about every 30s, but it increases your chances to notice or even prevent man-in-the-middle attacks (y/n) yEnter By default, tokens are good for 30 seconds and in order to compensate for possible time-skew between the client and the server, we allow an extra token before and after the current time. If you experience problems with poor time synchronization, you can increase the window from its default size of 1:30min to about 4min. Do you want to do so (y/n) yEnter If the computer that you are logging into isn't hardened against brute-force login attempts, you can enable rate-limiting for the authentication module. By default, this limits attackers to no more than 3 login attempts every 30s. Do you want to enable rate-limiting (y/n) yEnter

Переключиться на пользователя, который должен использовать двухфакторную аутентификацию и введите в терминал:

4. Создание кодов аутентификации

В этом диалоговом окне будет создан файл аутентификации с именем .google_authenticator, размещенный в домашнем каталоге пользователя. Этот файл может использоваться также для других учетных записей пользователя, если вы хотите, чтобы все они использовали те же токены. Далее этот файл можно настроить, а также использовать для 2FA в Apache2, но это еще одна история.

Основанный на времени шестизначный токен код - код аутентификации. По умолчанию эти жетоны хороши в течение 30 секунд плюс дополнительно добавлено 60 секунд, чтобы компенсировать возможный временной перекос.

ChallengeResponseAuthentication yes
UsePAM yes
PasswordAuthentication no           # You can leave this 'yes' it doesn't matter.
Пароль пользователя, который сам должен быть достаточно безопасным. [ ! d10] Расширения для веб-браузеров, описанные здесь Google Authenticator для Android Google Authenticator для iPhone / iPad

5. Пример использования

. Секретный ключ - E3CY3TNSNBXXXXXX, сгенерированный на предыдущем шаге, используется для генерации кодов аутентификации в некоторых приложениях как:

В этом примере используется расширение Authenticator для Хром / Хром:

6. Дальнейшее чтение

Расширения для веб-браузеров, описанные здесь Расширения для веб-браузеров, описанные здесь - как включить аутентификацию SSH с использованием приложения OATH-TOTP (метод описанных здесь) в дополнение к паре ключей SSH.

2FA внутри Apache2

Закрепить Ubuntu OpenSSH-сервер от атак Brute Force, но без брандмауэра или SSH-ключа Пара?

Расширения для веб-браузеров, описанные здесь - как включить аутентификацию SSH с использованием приложения OATH-TOTP (описанный здесь метод) в дополнение к (! d52) Google Authenticator для Android Linux: добавьте x секунд к текущей дате К сожалению: если это VPS, у вас могут не быть разрешений это ... Если вы используете VPS, обратитесь к своему провайдеру, чтобы справиться с этим для вас.

В некоторых случаях может быть разница между часами Google и часами сервера. Вот вам несколько советов по этой проблеме:

7
ответ дан 22 May 2018 в 23:44

Вам не нужно ничего устанавливать для такой защиты. Просто добавьте соответствующие правила в вашу систему iptables.

1. Правило предварительных условий:

В начале вашего набора правил разрешите возврату любого связанного трафика на сервер:

sudo iptables -A INPUT -i eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT

2. Правила обнаружения и блокировки:

Установите динамический список Badguy. Обнаруживать и DROP Плохие IP-адреса, которые используют пароли для SSH. После того, как они находятся в списке BADGUY, система сбросит все свои пакеты:

sudo iptables -A INPUT -i eth0 -m recent --update --hitcount 3 --seconds 90000 --name BADGUY_SSH -j LOG --log-prefix "SSH BAD:" --log-level info
sudo iptables -A INPUT -i eth0 -m recent --update --hitcount 3 --seconds 90000 --name BADGUY_SSH -j DROP
sudo iptables -A INPUT -i eth0 -p tcp -m tcp --dport 22 -m recent --set --name BADGUY_SSH -j ACCEPT
В приведенном выше коде 90000 секунд (25 часов) - это время блока. Любая попытка заблокированного IP-адреса, даже не связанная с SSH (в зависимости от других правил, которые вы можете или не имеете, и порядок), сбрасывает таймер времени блока.

3. HART-обнаружения:

Ограничить количество плохих паролей для каждого соединения до 2. По умолчанию 6.

Как sudo edit /etc/ssh/sshd_config, и там установлено:

    MaxAuthTries 2
5
ответ дан 22 May 2018 в 23:44
  • 1
    Благодаря! Не могли бы вы рассказать нам новоприбывших, если это можно сделать непосредственно из IPtables, почему некоторые предпочитают устанавливать и настраивать Denyhosts, Blockhosts, Blacklist, Fail2ban и т. Д. Для этой цели? – JohnDoea 13 April 2017 в 00:10
  • 2
    Кроме того, где вы устанавливаете часы для приостановки каждого злоумышленника? – JohnDoea 13 April 2017 в 00:10
  • 3
    @Benia: Я отредактировал свой ответ. Мое время приостановки примера - 90000 секунд или 25 часов. – Doug Smythies 13 April 2017 в 00:31
  • 4
    @Benia: Я понятия не имею, почему люди используют для этого другие инструменты. Я использую этот метод в течение примерно десятилетия. При этом некоторые страны (Китай) очень хорошо переключались на другой IP-адрес в одной и той же подсети и продолжали. Поэтому я в конечном итоге вручную блокирую целые подсети из некоторых стран. – Doug Smythies 13 April 2017 в 00:34
  • 5
    Если опция -i interface-name опущена, любое имя интерфейса будет соответствовать. – pa4080 16 April 2017 в 16:41

Вам не нужно ничего устанавливать для такой защиты. Просто добавьте соответствующие правила в вашу систему iptables.

1. Правило предварительных условий:

В начале вашего набора правил разрешите возврату любого связанного трафика на сервер:

sudo iptables -A INPUT -i eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT

2. Правила обнаружения и блокировки:

Установите динамический список Badguy. Обнаруживать и DROP Плохие IP-адреса, которые используют пароли для SSH. После того, как они находятся в списке BADGUY, система сбросит все свои пакеты:

sudo iptables -A INPUT -i eth0 -m recent --update --hitcount 3 --seconds 90000 --name BADGUY_SSH -j LOG --log-prefix "SSH BAD:" --log-level info sudo iptables -A INPUT -i eth0 -m recent --update --hitcount 3 --seconds 90000 --name BADGUY_SSH -j DROP sudo iptables -A INPUT -i eth0 -p tcp -m tcp --dport 22 -m recent --set --name BADGUY_SSH -j ACCEPT В приведенном выше коде 90000 секунд (25 часов) - это время блока. Любая попытка заблокированного IP-адреса, даже не связанная с SSH (в зависимости от других правил, которые вы можете или не имеете, и порядок), сбрасывает таймер времени блока.

3. HART-обнаружения:

Ограничить количество плохих паролей для каждого соединения до 2. По умолчанию 6.

Как sudo edit /etc/ssh/sshd_config, и там установлено:

MaxAuthTries 2
5
ответ дан 18 July 2018 в 15:07

Этот ответ намеревается дать возможный путь для удовлетворения основного вопроса: защитить сервер Ubuntu OpenSSH от атак Brute Force, но без пары ключей брандмауэра или SSH?

На самом деле я предпочитаю использовать брандмауэр и SSH и нашел ответ, предоставленный Doug Smythies, для действительно полезного.

Защитить SSH с двухфакторной аутентификацией

Двухфакторная аутентификация (2FA) - это тип ответ . В этом примере 2FA подтверждают заявленную идентификацию пользователя, используя комбинацию этих двух разных компонентов:

Основанный на времени шестизначный токен код - код аутентификации. По умолчанию эти жетоны хороши в течение 30 секунд плюс дополнительно добавлено 60 секунд, чтобы компенсировать возможный временной перекос. Пароль пользователя, который сам должен быть достаточно безопасным.

На самом деле, когда вы установили PermitRootLogin no и имена пользователей выбраны хорошо, для меня этот метод можно назвать 3FA.

Кроме того, если компьютер, в который вы входите, isn Закрепленная от попыток входа в грубую силу, вы можете включить ограничение скорости для модуля аутентификации.

Начнем:

1. Установить зависимости

sudo apt-get install libpam-google-authenticator

2. Отредактируйте файлы конфигурации

Основанный на времени шестизначный токен код - код аутентификации. По умолчанию эти токены хороши в течение 30 секунд плюс дополнительно добавлено 60 секунд, чтобы компенсировать возможный временной перекос.

Основанный на времени шестизначный токен код - код аутентификации. По умолчанию эти токены хороши в течение 30 секунд плюс дополнительно добавлено 60 секунд, чтобы компенсировать возможный временной перекос.

ChallengeResponseAuthentication yes UsePAM yes PasswordAuthentication no # You can leave this 'yes' it doesn't matter.

3. Активируйте двухфакторную аутентификацию для пользователя

Изменить /etc/ssh/sshd_config и изменить или добавить эти директивы:

$ google-authenticator Enter Do you want authentication tokens to be time-based (y/n) yEnter https://www.google.com/chart?chs=200x200&chld=M|0&cht=qr&chl=otpauth://totp/user@host%3Fsecret%3DE3CY3TNSNBXXXXXX Your new secret key is: E3CY3TNSNBXXXXXX Your verification code is 229999 Your emergency scratch codes are: 19999711 ... Do you want me to update your "/home/user/.google_authenticator" file (y/n) yEnter Do you want to disallow multiple uses of the same authentication token? This restricts you to one login about every 30s, but it increases your chances to notice or even prevent man-in-the-middle attacks (y/n) yEnter By default, tokens are good for 30 seconds and in order to compensate for possible time-skew between the client and the server, we allow an extra token before and after the current time. If you experience problems with poor time synchronization, you can increase the window from its default size of 1:30min to about 4min. Do you want to do so (y/n) yEnter If the computer that you are logging into isn't hardened against brute-force login attempts, you can enable rate-limiting for the authentication module. By default, this limits attackers to no more than 3 login attempts every 30s. Do you want to enable rate-limiting (y/n) yEnter

Переключиться на пользователя, который должен использовать двухфакторную аутентификацию и введите в терминал:

4. Создание кодов аутентификации

В этом диалоговом окне будет создан файл аутентификации с именем .google_authenticator, размещенный в домашнем каталоге пользователя. Этот файл может использоваться также для других учетных записей пользователя, если вы хотите, чтобы все они использовали те же токены. Далее этот файл можно настроить, а также использовать для 2FA в Apache2, но это еще одна история.

Основанный на времени шестизначный токен код - код аутентификации. По умолчанию эти жетоны хороши в течение 30 секунд плюс дополнительно добавлено 60 секунд, чтобы компенсировать возможный временной перекос.

ChallengeResponseAuthentication yes UsePAM yes PasswordAuthentication no # You can leave this 'yes' it doesn't matter.
Пароль пользователя, который сам должен быть достаточно безопасным. [ ! d10] Расширения для веб-браузеров, описанные здесь Google Authenticator для Android Google Authenticator для iPhone / iPad

5. Пример использования

. Секретный ключ - E3CY3TNSNBXXXXXX, сгенерированный на предыдущем шаге, используется для генерации кодов аутентификации в некоторых приложениях как:

В этом примере используется расширение Authenticator для Хром / Хром:

6. Дальнейшее чтение

Расширения для веб-браузеров, описанные здесь Расширения для веб-браузеров, описанные здесь - как включить аутентификацию SSH с использованием приложения OATH-TOTP (метод описанных здесь) в дополнение к паре ключей SSH.

2FA внутри Apache2

Закрепить Ubuntu OpenSSH-сервер от атак Brute Force, но без брандмауэра или SSH-ключа Пара?

Расширения для веб-браузеров, описанные здесь - как включить аутентификацию SSH с использованием приложения OATH-TOTP (описанный здесь метод) в дополнение к (! d52) Google Authenticator для Android Linux: добавьте x секунд к текущей дате К сожалению: если это VPS, у вас могут не быть разрешений это ... Если вы используете VPS, обратитесь к своему провайдеру, чтобы справиться с этим для вас.

В некоторых случаях может быть разница между часами Google и часами сервера. Вот вам несколько советов по этой проблеме:

7
ответ дан 18 July 2018 в 15:07

Вам не нужно ничего устанавливать для такой защиты. Просто добавьте соответствующие правила в вашу систему iptables.

1. Правило предварительных условий:

В начале вашего набора правил разрешите возврату любого связанного трафика на сервер:

sudo iptables -A INPUT -i eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT

2. Правила обнаружения и блокировки:

Установите динамический список Badguy. Обнаруживать и DROP Плохие IP-адреса, которые используют пароли для SSH. После того, как они находятся в списке BADGUY, система сбросит все свои пакеты:

sudo iptables -A INPUT -i eth0 -m recent --update --hitcount 3 --seconds 90000 --name BADGUY_SSH -j LOG --log-prefix "SSH BAD:" --log-level info sudo iptables -A INPUT -i eth0 -m recent --update --hitcount 3 --seconds 90000 --name BADGUY_SSH -j DROP sudo iptables -A INPUT -i eth0 -p tcp -m tcp --dport 22 -m recent --set --name BADGUY_SSH -j ACCEPT В приведенном выше коде 90000 секунд (25 часов) - это время блока. Любая попытка заблокированного IP-адреса, даже не связанная с SSH (в зависимости от других правил, которые вы можете или не имеете, и порядок), сбрасывает таймер времени блока.

3. HART-обнаружения:

Ограничить количество плохих паролей для каждого соединения до 2. По умолчанию 6.

Как sudo edit /etc/ssh/sshd_config, и там установлено:

MaxAuthTries 2
5
ответ дан 24 July 2018 в 20:33
  • 1
    Ваш ответ хороший. Но, пожалуйста, отредактируйте его и используйте больше инструментов форматирования, чтобы он выглядел красиво. – pa4080 12 April 2017 в 19:44
  • 2
    Благодаря! Не могли бы вы рассказать нам новоприбывших, если это можно сделать непосредственно из IPtables, почему некоторые предпочитают устанавливать и настраивать Denyhosts, Blockhosts, Blacklist, Fail2ban и т. Д. Для этой цели? – JohnDoea 13 April 2017 в 00:10
  • 3
    Кроме того, где вы устанавливаете часы для приостановки каждого злоумышленника? – JohnDoea 13 April 2017 в 00:10
  • 4
    @Benia: Я отредактировал свой ответ. Мое время приостановки примера - 90000 секунд или 25 часов. – Doug Smythies 13 April 2017 в 00:31
  • 5
    @Benia: Я понятия не имею, почему люди используют для этого другие инструменты. Я использую этот метод в течение примерно десятилетия. При этом некоторые страны (Китай) очень хорошо переключались на другой IP-адрес в одной и той же подсети и продолжали. Поэтому я в конечном итоге вручную блокирую целые подсети из некоторых стран. – Doug Smythies 13 April 2017 в 00:34
  • 6
    Я предложил изменить для лучшего форматирования. Пожалуйста ознакомтесь. – JohnDoea 13 April 2017 в 08:32
  • 7
    Если опция -i interface-name опущена, любое имя интерфейса будет соответствовать. – pa4080 16 April 2017 в 16:41

Этот ответ намеревается дать возможный путь для удовлетворения основного вопроса: защитить сервер Ubuntu OpenSSH от атак Brute Force, но без пары ключей брандмауэра или SSH?

На самом деле я предпочитаю использовать брандмауэр и SSH и нашел ответ, предоставленный Doug Smythies, для действительно полезного.

Защитить SSH с двухфакторной аутентификацией

Двухфакторная аутентификация (2FA) - это тип ответ . В этом примере 2FA подтверждают заявленную идентификацию пользователя, используя комбинацию этих двух разных компонентов:

Основанный на времени шестизначный токен код - код аутентификации. По умолчанию эти жетоны хороши в течение 30 секунд плюс дополнительно добавлено 60 секунд, чтобы компенсировать возможный временной перекос. Пароль пользователя, который сам должен быть достаточно безопасным.

На самом деле, когда вы установили PermitRootLogin no и имена пользователей выбраны хорошо, для меня этот метод можно назвать 3FA.

Кроме того, если компьютер, в который вы входите, isn Закрепленная от попыток входа в грубую силу, вы можете включить ограничение скорости для модуля аутентификации.

Начнем:

1. Установить зависимости

sudo apt-get install libpam-google-authenticator

2. Отредактируйте файлы конфигурации

Основанный на времени шестизначный токен код - код аутентификации. По умолчанию эти токены хороши в течение 30 секунд плюс дополнительно добавлено 60 секунд, чтобы компенсировать возможный временной перекос.

Основанный на времени шестизначный токен код - код аутентификации. По умолчанию эти токены хороши в течение 30 секунд плюс дополнительно добавлено 60 секунд, чтобы компенсировать возможный временной перекос.

ChallengeResponseAuthentication yes UsePAM yes PasswordAuthentication no # You can leave this 'yes' it doesn't matter.

3. Активируйте двухфакторную аутентификацию для пользователя

Изменить /etc/ssh/sshd_config и изменить или добавить эти директивы:

$ google-authenticator Enter Do you want authentication tokens to be time-based (y/n) yEnter https://www.google.com/chart?chs=200x200&chld=M|0&cht=qr&chl=otpauth://totp/user@host%3Fsecret%3DE3CY3TNSNBXXXXXX Your new secret key is: E3CY3TNSNBXXXXXX Your verification code is 229999 Your emergency scratch codes are: 19999711 ... Do you want me to update your "/home/user/.google_authenticator" file (y/n) yEnter Do you want to disallow multiple uses of the same authentication token? This restricts you to one login about every 30s, but it increases your chances to notice or even prevent man-in-the-middle attacks (y/n) yEnter By default, tokens are good for 30 seconds and in order to compensate for possible time-skew between the client and the server, we allow an extra token before and after the current time. If you experience problems with poor time synchronization, you can increase the window from its default size of 1:30min to about 4min. Do you want to do so (y/n) yEnter If the computer that you are logging into isn't hardened against brute-force login attempts, you can enable rate-limiting for the authentication module. By default, this limits attackers to no more than 3 login attempts every 30s. Do you want to enable rate-limiting (y/n) yEnter

Переключиться на пользователя, который должен использовать двухфакторную аутентификацию и введите в терминал:

4. Создание кодов аутентификации

В этом диалоговом окне будет создан файл аутентификации с именем .google_authenticator, размещенный в домашнем каталоге пользователя. Этот файл может использоваться также для других учетных записей пользователя, если вы хотите, чтобы все они использовали те же токены. Далее этот файл можно настроить, а также использовать для 2FA в Apache2, но это еще одна история.

Основанный на времени шестизначный токен код - код аутентификации. По умолчанию эти жетоны хороши в течение 30 секунд плюс дополнительно добавлено 60 секунд, чтобы компенсировать возможный временной перекос.

ChallengeResponseAuthentication yes UsePAM yes PasswordAuthentication no # You can leave this 'yes' it doesn't matter.
Пароль пользователя, который сам должен быть достаточно безопасным. [ ! d10] Расширения для веб-браузеров, описанные здесь Google Authenticator для Android Google Authenticator для iPhone / iPad

5. Пример использования

. Секретный ключ - E3CY3TNSNBXXXXXX, сгенерированный на предыдущем шаге, используется для генерации кодов аутентификации в некоторых приложениях как:

В этом примере используется расширение Authenticator для Хром / Хром:

6. Дальнейшее чтение

Расширения для веб-браузеров, описанные здесь Расширения для веб-браузеров, описанные здесь - как включить аутентификацию SSH с использованием приложения OATH-TOTP (метод описанных здесь) в дополнение к паре ключей SSH.

2FA внутри Apache2

Закрепить Ubuntu OpenSSH-сервер от атак Brute Force, но без брандмауэра или SSH-ключа Пара?

Расширения для веб-браузеров, описанные здесь - как включить аутентификацию SSH с использованием приложения OATH-TOTP (описанный здесь метод) в дополнение к (! d52) Google Authenticator для Android Linux: добавьте x секунд к текущей дате К сожалению: если это VPS, у вас могут не быть разрешений это ... Если вы используете VPS, обратитесь к своему провайдеру, чтобы справиться с этим для вас.

В некоторых случаях может быть разница между часами Google и часами сервера. Вот вам несколько советов по этой проблеме:

7
ответ дан 24 July 2018 в 20:33

Этот ответ намеревается дать возможный путь для удовлетворения основного вопроса: защитить сервер Ubuntu OpenSSH от атак Brute Force, но без пары ключей брандмауэра или SSH?

На самом деле я предпочитаю использовать брандмауэр и SSH и нашел ответ, предоставленный Doug Smythies, для действительно полезного.

Защитить SSH с двухфакторной аутентификацией

Двухфакторная аутентификация (2FA) - это тип ответ . В этом примере 2FA подтверждают заявленную идентификацию пользователя, используя комбинацию этих двух разных компонентов:

Основанный на времени шестизначный токен код - код аутентификации. По умолчанию эти жетоны хороши в течение 30 секунд плюс дополнительно добавлено 60 секунд, чтобы компенсировать возможный временной перекос. Пароль пользователя, который сам должен быть достаточно безопасным.

На самом деле, когда вы установили PermitRootLogin no и имена пользователей выбраны хорошо, для меня этот метод можно назвать 3FA.

Кроме того, если компьютер, в который вы входите, isn Закрепленная от попыток входа в грубую силу, вы можете включить ограничение скорости для модуля аутентификации.

Начнем:

1. Установить зависимости

sudo apt-get install libpam-google-authenticator

2. Отредактируйте файлы конфигурации

Основанный на времени шестизначный токен код - код аутентификации. По умолчанию эти токены хороши в течение 30 секунд плюс дополнительно добавлено 60 секунд, чтобы компенсировать возможный временной перекос.

Основанный на времени шестизначный токен код - код аутентификации. По умолчанию эти токены хороши в течение 30 секунд плюс дополнительно добавлено 60 секунд, чтобы компенсировать возможный временной перекос.

ChallengeResponseAuthentication yes UsePAM yes PasswordAuthentication no # You can leave this 'yes' it doesn't matter.

3. Активируйте двухфакторную аутентификацию для пользователя

Изменить /etc/ssh/sshd_config и изменить или добавить эти директивы:

$ google-authenticator Enter Do you want authentication tokens to be time-based (y/n) yEnter https://www.google.com/chart?chs=200x200&chld=M|0&cht=qr&chl=otpauth://totp/user@host%3Fsecret%3DE3CY3TNSNBXXXXXX Your new secret key is: E3CY3TNSNBXXXXXX Your verification code is 229999 Your emergency scratch codes are: 19999711 ... Do you want me to update your "/home/user/.google_authenticator" file (y/n) yEnter Do you want to disallow multiple uses of the same authentication token? This restricts you to one login about every 30s, but it increases your chances to notice or even prevent man-in-the-middle attacks (y/n) yEnter By default, tokens are good for 30 seconds and in order to compensate for possible time-skew between the client and the server, we allow an extra token before and after the current time. If you experience problems with poor time synchronization, you can increase the window from its default size of 1:30min to about 4min. Do you want to do so (y/n) yEnter If the computer that you are logging into isn't hardened against brute-force login attempts, you can enable rate-limiting for the authentication module. By default, this limits attackers to no more than 3 login attempts every 30s. Do you want to enable rate-limiting (y/n) yEnter

Переключиться на пользователя, который должен использовать двухфакторную аутентификацию и введите в терминал:

4. Создание кодов аутентификации

В этом диалоговом окне будет создан файл аутентификации с именем .google_authenticator, размещенный в домашнем каталоге пользователя. Этот файл может использоваться также для других учетных записей пользователя, если вы хотите, чтобы все они использовали те же токены. Далее этот файл можно настроить, а также использовать для 2FA в Apache2, но это еще одна история.

Основанный на времени шестизначный токен код - код аутентификации. По умолчанию эти жетоны хороши в течение 30 секунд плюс дополнительно добавлено 60 секунд, чтобы компенсировать возможный временной перекос.

ChallengeResponseAuthentication yes UsePAM yes PasswordAuthentication no # You can leave this 'yes' it doesn't matter.
Пароль пользователя, который сам должен быть достаточно безопасным. [ ! d10] Расширения для веб-браузеров, описанные здесь Google Authenticator для Android Google Authenticator для iPhone / iPad

5. Пример использования

. Секретный ключ - E3CY3TNSNBXXXXXX, сгенерированный на предыдущем шаге, используется для генерации кодов аутентификации в некоторых приложениях как:

В этом примере используется расширение Authenticator для Хром / Хром:

6. Дальнейшее чтение

Расширения для веб-браузеров, описанные здесь Расширения для веб-браузеров, описанные здесь - как включить аутентификацию SSH с использованием приложения OATH-TOTP (метод описанных здесь) в дополнение к паре ключей SSH.

2FA внутри Apache2

Закрепить Ubuntu OpenSSH-сервер от атак Brute Force, но без брандмауэра или SSH-ключа Пара?

Расширения для веб-браузеров, описанные здесь - как включить аутентификацию SSH с использованием приложения OATH-TOTP (описанный здесь метод) в дополнение к (! d52) Google Authenticator для Android Linux: добавьте x секунд к текущей дате К сожалению: если это VPS, у вас могут не быть разрешений это ... Если вы используете VPS, обратитесь к своему провайдеру, чтобы справиться с этим для вас.

В некоторых случаях может быть разница между часами Google и часами сервера. Вот вам несколько советов по этой проблеме:

7
ответ дан 31 July 2018 в 23:35

Этот ответ намеревается дать возможный путь для удовлетворения основного вопроса: защитить сервер Ubuntu OpenSSH от атак Brute Force, но без пары ключей брандмауэра или SSH?

На самом деле я предпочитаю использовать брандмауэр и SSH и нашел ответ , предоставленный Doug Smythies, для действительно полезного.

Защитить SSH с двухфакторной аутентификацией

Двухфакторная аутентификация (2FA) является типом многофакторной аутентификации . В этом примере 2FA подтверждают заявленную пользователем идентификацию, используя комбинацию этих двух разных компонентов:

  • Основанный на времени шестизначный токен-код - код аутентификации. По умолчанию эти токены хороши в течение 30 секунд плюс дополнительно добавлено 60 секунд, чтобы компенсировать возможный перекос по времени.
  • Пароль пользователя, который сам должен быть достаточно защищен .

На самом деле, когда вы установили PermitRootLogin no и имена пользователей выбраны хорошо, для меня этот метод можно назвать 3FA.

Кроме того, если компьютер, которым вы являетесь вход в систему не затвердевает от попыток входа в грубую силу, вы можете включить ограничение скорости для модуля аутентификации.

Начнем:

1. Установить зависимости

sudo apt-get install libpam-google-authenticator

2. Отредактируйте файлы конфигурации

  • Измените /etc/pam.d/sshd и добавьте эту директиву:
    # Google Authenticator
    auth required pam_google_authenticator.so
    
    Добавьте его в начало файла. Таким образом, система запросит первый код аутентификации и только затем запросит пароль. Добавьте его в конец файла - система запросит первый пароль.
  • Измените /etc/ssh/sshd_config и измените или добавьте эти директивы:
    ChallengeResponseAuthentication yes
    UsePAM yes
    PasswordAuthentication no           # You can leave this 'yes' it doesn't matter.
    

3. Активируйте двухфакторную аутентификацию для пользователя

Перейдите к пользователю, который должен использовать двухфакторную аутентификацию и введите в терминал:

$ google-authenticator Enter

Do you want authentication tokens to be time-based (y/n) yEnter
https://www.google.com/chart?chs=200x200&chld=M|0&cht=qr&chl=otpauth://totp/user@host%3Fsecret%3DE3CY3TNSNBXXXXXX


Your new secret key is: E3CY3TNSNBXXXXXX
Your verification code is 229999
Your emergency scratch codes are:
  19999711
  ...

Do you want me to update your "/home/user/.google_authenticator" file (y/n) yEnter

Do you want to disallow multiple uses of the same authentication token? This restricts you to one login about every 30s, but it increases your chances to notice or even prevent man-in-the-middle attacks 
(y/n) yEnter

By default, tokens are good for 30 seconds and in order to compensate for possible time-skew between the client and the server, we allow an extra token before and after the current time. If you experience problems with poor time synchronization, you can increase the window from its default size of 1:30min to about 4min. Do you want to do so 
(y/n) yEnter

If the computer that you are logging into isn't hardened against brute-force login attempts, you can enable rate-limiting for the authentication module. By default, this limits attackers to no more than 3 login attempts every 30s. Do you want to enable rate-limiting 
(y/n) yEnter

В этом диалоговом окне будет создана аутентификация файл под названием .google_authenticator, помещенный в домашний каталог пользователя. Этот файл может использоваться также для других учетных записей пользователя, если вы хотите, чтобы все они использовали те же токены. Далее этот файл можно настроить, а также использовать для 2FA в Apache2 , но это еще одна история.

4. Создание кодов аутентификации

Секретный ключ - E3CY3TNSNBXXXXXX - сгенерированный на предыдущем шаге используется для генерации кодов аутентификации в некоторых приложениях как:

5. Пример использования

В этом примере используется расширение Authenticator для Chromium / Chrome:

6. Дальнейшее чтение


EDIT:

В некоторых случаях может быть разница между часами Google и часами сервера. Вот несколько советов по этой проблеме:

К сожалению : Если это VPS, у вас могут не быть прав для этого ... Если вы используете VPS, обратитесь к своему провайдеру, чтобы обработать это для вас.

In Если ваш провайдер не хочет отвечать на ваши требования, вышеуказанная настройка будет работать, но с изменением времени. Введите date в консоль вашего сервера и измерьте этот сдвиг во времени. Затем просто работайте с этим временным сдвигом между моментом генерации кода аутентификации и моментом его использования.

7
ответ дан 2 August 2018 в 18:32

Этот ответ намеревается дать возможный путь для удовлетворения основного вопроса: защитить сервер Ubuntu OpenSSH от атак Brute Force, но без пары ключей брандмауэра или SSH?

На самом деле я предпочитаю использовать брандмауэр и SSH и нашел ответ , предоставленный Doug Smythies, для действительно полезного.

Защитить SSH с двухфакторной аутентификацией

Двухфакторная аутентификация (2FA) является типом многофакторной аутентификации . В этом примере 2FA подтверждают заявленную пользователем идентификацию, используя комбинацию этих двух разных компонентов:

  • Основанный на времени шестизначный токен-код - код аутентификации. По умолчанию эти токены хороши в течение 30 секунд плюс дополнительно добавлено 60 секунд, чтобы компенсировать возможный перекос по времени.
  • Пароль пользователя, который сам должен быть достаточно защищен .

На самом деле, когда вы установили PermitRootLogin no и имена пользователей выбраны хорошо, для меня этот метод можно назвать 3FA.

Кроме того, если компьютер, которым вы являетесь вход в систему не затвердевает от попыток входа в грубую силу, вы можете включить ограничение скорости для модуля аутентификации.

Начнем:

1. Установить зависимости

sudo apt-get install libpam-google-authenticator

2. Отредактируйте файлы конфигурации

  • Измените /etc/pam.d/sshd и добавьте эту директиву:
    # Google Authenticator
    auth required pam_google_authenticator.so
    
    Добавьте его в начало файла. Таким образом, система запросит первый код аутентификации и только затем запросит пароль. Добавьте его в конец файла - система запросит первый пароль.
  • Измените /etc/ssh/sshd_config и измените или добавьте эти директивы:
    ChallengeResponseAuthentication yes
    UsePAM yes
    PasswordAuthentication no           # You can leave this 'yes' it doesn't matter.
    

3. Активируйте двухфакторную аутентификацию для пользователя

Перейдите к пользователю, который должен использовать двухфакторную аутентификацию и введите в терминал:

$ google-authenticator Enter

Do you want authentication tokens to be time-based (y/n) yEnter
https://www.google.com/chart?chs=200x200&chld=M|0&cht=qr&chl=otpauth://totp/user@host%3Fsecret%3DE3CY3TNSNBXXXXXX


Your new secret key is: E3CY3TNSNBXXXXXX
Your verification code is 229999
Your emergency scratch codes are:
  19999711
  ...

Do you want me to update your "/home/user/.google_authenticator" file (y/n) yEnter

Do you want to disallow multiple uses of the same authentication token? This restricts you to one login about every 30s, but it increases your chances to notice or even prevent man-in-the-middle attacks 
(y/n) yEnter

By default, tokens are good for 30 seconds and in order to compensate for possible time-skew between the client and the server, we allow an extra token before and after the current time. If you experience problems with poor time synchronization, you can increase the window from its default size of 1:30min to about 4min. Do you want to do so 
(y/n) yEnter

If the computer that you are logging into isn't hardened against brute-force login attempts, you can enable rate-limiting for the authentication module. By default, this limits attackers to no more than 3 login attempts every 30s. Do you want to enable rate-limiting 
(y/n) yEnter

В этом диалоговом окне будет создана аутентификация файл под названием .google_authenticator, помещенный в домашний каталог пользователя. Этот файл может использоваться также для других учетных записей пользователя, если вы хотите, чтобы все они использовали те же токены. Далее этот файл можно настроить, а также использовать для 2FA в Apache2 , но это еще одна история.

4. Создание кодов аутентификации

Секретный ключ - E3CY3TNSNBXXXXXX - сгенерированный на предыдущем шаге используется для генерации кодов аутентификации в некоторых приложениях как:

5. Пример использования

В этом примере используется расширение Authenticator для Chromium / Chrome:

6. Дальнейшее чтение


EDIT:

В некоторых случаях может быть разница между часами Google и часами сервера. Вот несколько советов по этой проблеме:

К сожалению : Если это VPS, у вас могут не быть прав для этого ... Если вы используете VPS, обратитесь к своему провайдеру, чтобы обработать это для вас.

In Если ваш провайдер не хочет отвечать на ваши требования, вышеуказанная настройка будет работать, но с изменением времени. Введите date в консоль вашего сервера и измерьте этот сдвиг во времени. Затем просто работайте с этим временным сдвигом между моментом генерации кода аутентификации и моментом его использования.

7
ответ дан 3 August 2018 в 20:51

Этот ответ намеревается дать возможный путь для удовлетворения основного вопроса: защитить сервер Ubuntu OpenSSH от атак Brute Force, но без пары ключей брандмауэра или SSH?

На самом деле я предпочитаю использовать брандмауэр и SSH и нашел ответ , предоставленный Doug Smythies, для действительно полезного.

Защитить SSH с двухфакторной аутентификацией

Двухфакторная аутентификация (2FA) является типом многофакторной аутентификации . В этом примере 2FA подтверждают заявленную пользователем идентификацию, используя комбинацию этих двух разных компонентов:

  • Основанный на времени шестизначный токен-код - код аутентификации. По умолчанию эти токены хороши в течение 30 секунд плюс дополнительно добавлено 60 секунд, чтобы компенсировать возможный перекос по времени.
  • Пароль пользователя, который сам должен быть достаточно защищен .

На самом деле, когда вы установили PermitRootLogin no и имена пользователей выбраны хорошо, для меня этот метод можно назвать 3FA.

Кроме того, если компьютер, которым вы являетесь вход в систему не затвердевает от попыток входа в грубую силу, вы можете включить ограничение скорости для модуля аутентификации.

Начнем:

1. Установить зависимости

sudo apt-get install libpam-google-authenticator

2. Отредактируйте файлы конфигурации

  • Измените /etc/pam.d/sshd и добавьте эту директиву:
    # Google Authenticator
    auth required pam_google_authenticator.so
    
    Добавьте его в начало файла. Таким образом, система запросит первый код аутентификации и только затем запросит пароль. Добавьте его в конец файла - система запросит первый пароль.
  • Измените /etc/ssh/sshd_config и измените или добавьте эти директивы:
    ChallengeResponseAuthentication yes
    UsePAM yes
    PasswordAuthentication no           # You can leave this 'yes' it doesn't matter.
    

3. Активируйте двухфакторную аутентификацию для пользователя

Перейдите к пользователю, который должен использовать двухфакторную аутентификацию и введите в терминал:

$ google-authenticator Enter

Do you want authentication tokens to be time-based (y/n) yEnter
https://www.google.com/chart?chs=200x200&chld=M|0&cht=qr&chl=otpauth://totp/user@host%3Fsecret%3DE3CY3TNSNBXXXXXX


Your new secret key is: E3CY3TNSNBXXXXXX
Your verification code is 229999
Your emergency scratch codes are:
  19999711
  ...

Do you want me to update your "/home/user/.google_authenticator" file (y/n) yEnter

Do you want to disallow multiple uses of the same authentication token? This restricts you to one login about every 30s, but it increases your chances to notice or even prevent man-in-the-middle attacks 
(y/n) yEnter

By default, tokens are good for 30 seconds and in order to compensate for possible time-skew between the client and the server, we allow an extra token before and after the current time. If you experience problems with poor time synchronization, you can increase the window from its default size of 1:30min to about 4min. Do you want to do so 
(y/n) yEnter

If the computer that you are logging into isn't hardened against brute-force login attempts, you can enable rate-limiting for the authentication module. By default, this limits attackers to no more than 3 login attempts every 30s. Do you want to enable rate-limiting 
(y/n) yEnter

В этом диалоговом окне будет создана аутентификация файл под названием .google_authenticator, помещенный в домашний каталог пользователя. Этот файл может использоваться также для других учетных записей пользователя, если вы хотите, чтобы все они использовали те же токены. Далее этот файл можно настроить, а также использовать для 2FA в Apache2 , но это еще одна история.

4. Создание кодов аутентификации

Секретный ключ - E3CY3TNSNBXXXXXX - сгенерированный на предыдущем шаге используется для генерации кодов аутентификации в некоторых приложениях как:

5. Пример использования

В этом примере используется расширение Authenticator для Chromium / Chrome:

6. Дальнейшее чтение


EDIT:

В некоторых случаях может быть разница между часами Google и часами сервера. Вот несколько советов по этой проблеме:

К сожалению : Если это VPS, у вас могут не быть прав для этого ... Если вы используете VPS, обратитесь к своему провайдеру, чтобы обработать это для вас.

In Если ваш провайдер не хочет отвечать на ваши требования, вышеуказанная настройка будет работать, но с изменением времени. Введите date в консоль вашего сервера и измерьте этот сдвиг во времени. Затем просто работайте с этим временным сдвигом между моментом генерации кода аутентификации и моментом его использования.

7
ответ дан 5 August 2018 в 05:30

Этот ответ намеревается дать возможный путь для удовлетворения основного вопроса: защитить сервер Ubuntu OpenSSH от атак Brute Force, но без пары ключей брандмауэра или SSH?

На самом деле я предпочитаю использовать брандмауэр и SSH и нашел ответ , предоставленный Doug Smythies, для действительно полезного.

Защитить SSH с двухфакторной аутентификацией

Двухфакторная аутентификация (2FA) является типом многофакторной аутентификации . В этом примере 2FA подтверждают заявленную пользователем идентификацию, используя комбинацию этих двух разных компонентов:

  • Основанный на времени шестизначный токен-код - код аутентификации. По умолчанию эти токены хороши в течение 30 секунд плюс дополнительно добавлено 60 секунд, чтобы компенсировать возможный перекос по времени.
  • Пароль пользователя, который сам должен быть достаточно защищен .

На самом деле, когда вы установили PermitRootLogin no и имена пользователей выбраны хорошо, для меня этот метод можно назвать 3FA.

Кроме того, если компьютер, которым вы являетесь вход в систему не затвердевает от попыток входа в грубую силу, вы можете включить ограничение скорости для модуля аутентификации.

Начнем:

1. Установить зависимости

sudo apt-get install libpam-google-authenticator

2. Отредактируйте файлы конфигурации

  • Измените /etc/pam.d/sshd и добавьте эту директиву:
    # Google Authenticator
    auth required pam_google_authenticator.so
    
    Добавьте его в начало файла. Таким образом, система запросит первый код аутентификации и только затем запросит пароль. Добавьте его в конец файла - система запросит первый пароль.
  • Измените /etc/ssh/sshd_config и измените или добавьте эти директивы:
    ChallengeResponseAuthentication yes
    UsePAM yes
    PasswordAuthentication no           # You can leave this 'yes' it doesn't matter.
    

3. Активируйте двухфакторную аутентификацию для пользователя

Перейдите к пользователю, который должен использовать двухфакторную аутентификацию и введите в терминал:

$ google-authenticator Enter

Do you want authentication tokens to be time-based (y/n) yEnter
https://www.google.com/chart?chs=200x200&chld=M|0&cht=qr&chl=otpauth://totp/user@host%3Fsecret%3DE3CY3TNSNBXXXXXX


Your new secret key is: E3CY3TNSNBXXXXXX
Your verification code is 229999
Your emergency scratch codes are:
  19999711
  ...

Do you want me to update your "/home/user/.google_authenticator" file (y/n) yEnter

Do you want to disallow multiple uses of the same authentication token? This restricts you to one login about every 30s, but it increases your chances to notice or even prevent man-in-the-middle attacks 
(y/n) yEnter

By default, tokens are good for 30 seconds and in order to compensate for possible time-skew between the client and the server, we allow an extra token before and after the current time. If you experience problems with poor time synchronization, you can increase the window from its default size of 1:30min to about 4min. Do you want to do so 
(y/n) yEnter

If the computer that you are logging into isn't hardened against brute-force login attempts, you can enable rate-limiting for the authentication module. By default, this limits attackers to no more than 3 login attempts every 30s. Do you want to enable rate-limiting 
(y/n) yEnter

В этом диалоговом окне будет создана аутентификация файл под названием .google_authenticator, помещенный в домашний каталог пользователя. Этот файл может использоваться также для других учетных записей пользователя, если вы хотите, чтобы все они использовали те же токены. Далее этот файл можно настроить, а также использовать для 2FA в Apache2 , но это еще одна история.

4. Создание кодов аутентификации

Секретный ключ - E3CY3TNSNBXXXXXX - сгенерированный на предыдущем шаге используется для генерации кодов аутентификации в некоторых приложениях как:

5. Пример использования

В этом примере используется расширение Authenticator для Chromium / Chrome:

6. Дальнейшее чтение


EDIT:

В некоторых случаях может быть разница между часами Google и часами сервера. Вот несколько советов по этой проблеме:

К сожалению : Если это VPS, у вас могут не быть прав для этого ... Если вы используете VPS, обратитесь к своему провайдеру, чтобы обработать это для вас.

In Если ваш провайдер не хочет отвечать на ваши требования, вышеуказанная настройка будет работать, но с изменением времени. Введите date в консоль вашего сервера и измерьте этот сдвиг во времени. Затем просто работайте с этим временным сдвигом между моментом генерации кода аутентификации и моментом его использования.

7
ответ дан 6 August 2018 в 22:38

Этот ответ намеревается дать возможный путь для удовлетворения основного вопроса: защитить сервер Ubuntu OpenSSH от атак Brute Force, но без пары ключей брандмауэра или SSH?

На самом деле я предпочитаю использовать брандмауэр и SSH и нашел ответ , предоставленный Doug Smythies, для действительно полезного.

Защитить SSH с двухфакторной аутентификацией

Двухфакторная аутентификация (2FA) является типом многофакторной аутентификации . В этом примере 2FA подтверждают заявленную пользователем идентификацию, используя комбинацию этих двух разных компонентов:

  • Основанный на времени шестизначный токен-код - код аутентификации. По умолчанию эти токены хороши в течение 30 секунд плюс дополнительно добавлено 60 секунд, чтобы компенсировать возможный перекос по времени.
  • Пароль пользователя, который сам должен быть достаточно защищен .

На самом деле, когда вы установили PermitRootLogin no и имена пользователей выбраны хорошо, для меня этот метод можно назвать 3FA.

Кроме того, если компьютер, которым вы являетесь вход в систему не затвердевает от попыток входа в грубую силу, вы можете включить ограничение скорости для модуля аутентификации.

Начнем:

1. Установить зависимости

sudo apt-get install libpam-google-authenticator

2. Отредактируйте файлы конфигурации

  • Измените /etc/pam.d/sshd и добавьте эту директиву:
    # Google Authenticator
    auth required pam_google_authenticator.so
    
    Добавьте его в начало файла. Таким образом, система запросит первый код аутентификации и только затем запросит пароль. Добавьте его в конец файла - система запросит первый пароль.
  • Измените /etc/ssh/sshd_config и измените или добавьте эти директивы:
    ChallengeResponseAuthentication yes
    UsePAM yes
    PasswordAuthentication no           # You can leave this 'yes' it doesn't matter.
    

3. Активируйте двухфакторную аутентификацию для пользователя

Перейдите к пользователю, который должен использовать двухфакторную аутентификацию и введите в терминал:

$ google-authenticator Enter

Do you want authentication tokens to be time-based (y/n) yEnter
https://www.google.com/chart?chs=200x200&chld=M|0&cht=qr&chl=otpauth://totp/user@host%3Fsecret%3DE3CY3TNSNBXXXXXX


Your new secret key is: E3CY3TNSNBXXXXXX
Your verification code is 229999
Your emergency scratch codes are:
  19999711
  ...

Do you want me to update your "/home/user/.google_authenticator" file (y/n) yEnter

Do you want to disallow multiple uses of the same authentication token? This restricts you to one login about every 30s, but it increases your chances to notice or even prevent man-in-the-middle attacks 
(y/n) yEnter

By default, tokens are good for 30 seconds and in order to compensate for possible time-skew between the client and the server, we allow an extra token before and after the current time. If you experience problems with poor time synchronization, you can increase the window from its default size of 1:30min to about 4min. Do you want to do so 
(y/n) yEnter

If the computer that you are logging into isn't hardened against brute-force login attempts, you can enable rate-limiting for the authentication module. By default, this limits attackers to no more than 3 login attempts every 30s. Do you want to enable rate-limiting 
(y/n) yEnter

В этом диалоговом окне будет создана аутентификация файл под названием .google_authenticator, помещенный в домашний каталог пользователя. Этот файл может использоваться также для других учетных записей пользователя, если вы хотите, чтобы все они использовали те же токены. Далее этот файл можно настроить, а также использовать для 2FA в Apache2 , но это еще одна история.

4. Создание кодов аутентификации

Секретный ключ - E3CY3TNSNBXXXXXX - сгенерированный на предыдущем шаге используется для генерации кодов аутентификации в некоторых приложениях как:

5. Пример использования

В этом примере используется расширение Authenticator для Chromium / Chrome:

6. Дальнейшее чтение


EDIT:

В некоторых случаях может быть разница между часами Google и часами сервера. Вот несколько советов по этой проблеме:

К сожалению : Если это VPS, у вас могут не быть прав для этого ... Если вы используете VPS, обратитесь к своему провайдеру, чтобы обработать это для вас.

In Если ваш провайдер не хочет отвечать на ваши требования, вышеуказанная настройка будет работать, но с изменением времени. Введите date в консоль вашего сервера и измерьте этот сдвиг во времени. Затем просто работайте с этим временным сдвигом между моментом генерации кода аутентификации и моментом его использования.

7
ответ дан 9 August 2018 в 03:03

Этот ответ намеревается дать возможный путь для удовлетворения основного вопроса: защитить сервер Ubuntu OpenSSH от атак Brute Force, но без пары ключей брандмауэра или SSH?

На самом деле я предпочитаю использовать брандмауэр и SSH и нашел ответ , предоставленный Doug Smythies, для действительно полезного.

Защитить SSH с двухфакторной аутентификацией

Двухфакторная аутентификация (2FA) является типом многофакторной аутентификации . В этом примере 2FA подтверждают заявленную пользователем идентификацию, используя комбинацию этих двух разных компонентов:

  • Основанный на времени шестизначный токен-код - код аутентификации. По умолчанию эти токены хороши в течение 30 секунд плюс дополнительно добавлено 60 секунд, чтобы компенсировать возможный перекос по времени.
  • Пароль пользователя, который сам должен быть достаточно защищен .

На самом деле, когда вы установили PermitRootLogin no и имена пользователей выбраны хорошо, для меня этот метод можно назвать 3FA.

Кроме того, если компьютер, которым вы являетесь вход в систему не затвердевает от попыток входа в грубую силу, вы можете включить ограничение скорости для модуля аутентификации.

Начнем:

1. Установить зависимости

sudo apt-get install libpam-google-authenticator

2. Отредактируйте файлы конфигурации

  • Измените /etc/pam.d/sshd и добавьте эту директиву:
    # Google Authenticator
    auth required pam_google_authenticator.so
    
    Добавьте его в начало файла. Таким образом, система запросит первый код аутентификации и только затем запросит пароль. Добавьте его в конец файла - система запросит первый пароль.
  • Измените /etc/ssh/sshd_config и измените или добавьте эти директивы:
    ChallengeResponseAuthentication yes
    UsePAM yes
    PasswordAuthentication no           # You can leave this 'yes' it doesn't matter.
    

3. Активируйте двухфакторную аутентификацию для пользователя

Перейдите к пользователю, который должен использовать двухфакторную аутентификацию и введите в терминал:

$ google-authenticator Enter

Do you want authentication tokens to be time-based (y/n) yEnter
https://www.google.com/chart?chs=200x200&chld=M|0&cht=qr&chl=otpauth://totp/user@host%3Fsecret%3DE3CY3TNSNBXXXXXX


Your new secret key is: E3CY3TNSNBXXXXXX
Your verification code is 229999
Your emergency scratch codes are:
  19999711
  ...

Do you want me to update your "/home/user/.google_authenticator" file (y/n) yEnter

Do you want to disallow multiple uses of the same authentication token? This restricts you to one login about every 30s, but it increases your chances to notice or even prevent man-in-the-middle attacks 
(y/n) yEnter

By default, tokens are good for 30 seconds and in order to compensate for possible time-skew between the client and the server, we allow an extra token before and after the current time. If you experience problems with poor time synchronization, you can increase the window from its default size of 1:30min to about 4min. Do you want to do so 
(y/n) yEnter

If the computer that you are logging into isn't hardened against brute-force login attempts, you can enable rate-limiting for the authentication module. By default, this limits attackers to no more than 3 login attempts every 30s. Do you want to enable rate-limiting 
(y/n) yEnter

В этом диалоговом окне будет создана аутентификация файл под названием .google_authenticator, помещенный в домашний каталог пользователя. Этот файл может использоваться также для других учетных записей пользователя, если вы хотите, чтобы все они использовали те же токены. Далее этот файл можно настроить, а также использовать для 2FA в Apache2 , но это еще одна история.

4. Создание кодов аутентификации

Секретный ключ - E3CY3TNSNBXXXXXX - сгенерированный на предыдущем шаге используется для генерации кодов аутентификации в некоторых приложениях как:

5. Пример использования

В этом примере используется расширение Authenticator для Chromium / Chrome:

6. Дальнейшее чтение


EDIT:

В некоторых случаях может быть разница между часами Google и часами сервера. Вот несколько советов по этой проблеме:

К сожалению : Если это VPS, у вас могут не быть прав для этого ... Если вы используете VPS, обратитесь к своему провайдеру, чтобы обработать это для вас.

In Если ваш провайдер не хочет отвечать на ваши требования, вышеуказанная настройка будет работать, но с изменением времени. Введите date в консоль вашего сервера и измерьте этот сдвиг во времени. Затем просто работайте с этим временным сдвигом между моментом генерации кода аутентификации и моментом его использования.

7
ответ дан 14 August 2018 в 21:21

Другие вопросы по тегам:

Похожие вопросы: