Thank you for reading this post, don't forget to subscribe!
Можно разными способами защищать доступ по SSH к своему серверу - запрещать / разрешать доступ для разных пользователей, настраивать аутентификацию по ключам или например настроить двухфакторную аутентификацию при помощи Google Authenticatior.
Перед тем, как начать, рекомендую настроить NTP синхронизацию на своем сервере / рабочей станции, например при помощи CHRONY, установить на свой телефон Google Authenticator (ищи в Google Play или что ты там используешь), далее приступить к установке и на настройке MFA.
Установка Google Authenticator
Для CentOS необходимо установить epel репозиторий:
yum install epel-release
Далее установить Gogle Authenticator:
yum install google-authenticator
Настройка Gogle Authenticator
Для настройки необходимо запустить google-authenticator из-под пользователя для которого будет настраиваться MFA:
google-authenticator
После запуска необходимо ответить на несколько вопросов:
Do you want authentication tokens to be time-based (y/n) y
Do you want me to update your "/home/ssh-user/.google_authenticator" file (y/n) y
И так далее, отвечаем на все вопросы утвердительно, на одном из этапов необходимо отсканировать QR код для своего мобильного аутентификатора
Настройка SSH
Необходимо добавить строку в sshd конфиг pam.d:
nano /etc/pam.d/sshd
1 2 3 |
<span class="hljs-comment"># Google auth</span> auth required pam_google_authenticator.so nullok |
Включить параметр:
ChallengeResponseAuthentication yes
В конфигe sshd:
/etc/ssh/sshd_config
Перезапустить sshd:
systemctl restart sshd.service
Тестирование подключения
Пробуем подключиться как обычно, если используется аутентификация по паролю, после ввода пароля нужно будет ввести проверочный ключ:
1 2 3 |
ssh <span id="cloak9463c910f952fa12134f3b307d5c9d69"><a href="mailto:ssh-user@192.168.0.10">SSH-USER@192.168.0.10</a></span> Password: Verification code: |
Если используется подключение по RSA ключу
если такое подключение настроено, то для работоспособности связки RSA + OTP необходимо открыть sshd_config:
1 |
nano /etc/ssh/sshd_config |
Добавить в него строку:
1 |
AuthenticationMethods publickey,password publickey,keyboard-interactive |
Открыть pam конфиг sshd:
1 |
nano /etc/pam.d/sshd |
Закомментировать строку:
1 |
<span class="hljs-comment"># auth substack password-auth</span> |
Перезапустить sshd:
1 |
systemctl restart sshd.service |
Отладка SSHD
Для этого достаточно запустить sshd с параметром -D:
1 |
/usr/sbin/sshd -p 1234 -D <span class="hljs-_">-d</span> <span class="hljs-_">-e</span> |
Временно добавить порт в исключения firewalld:
1 |
firewall-cmd --add-port=1234/tcp |
Попробовать подключиться на указанный порт:
1 |
ssh <span id="cloak749e9b694f27fac9b4739e5df5b42610"><a href="mailto:ssh-user@192.168.0.10">SSH-USER@192.168.0.10</a></span> -p1234 |