аутентификация с помощью ssh ключей и отключение доступа по паролю | маклауд

Аутентификация с помощью ssh ключей и отключение доступа по паролю | маклауд

Что такое аутентификация с помощью SSH ключей, как она работает и для чего используют?

Аутентификация с помощью SSH ключей является чрезвычайно безопасным способом входа на сервер. В данном случае используются два криптографических ключа, каждая пара ключей состоит из открытого и закрытого ключа. Открытый ключ можно не опасаясь распространять т.к. он служит для шифрования сообщений, которые можно расшифровать только имея закрытый ключ.

Закрытый ключ необходимо очень надежно хранить! Мы крайне рекомендуем в качестве дополнительной меры предосторожности защитить его парольной фразой.

Публичный ключ вы можете добавить в разделе “Мои Серверы”, вкладка “SSH-ключи”.

autentifikatsiya-s-pomoshchyu-ssh-klyuchey-i-otklyuchenie-dostupa-po-parolyu-0.png

Есть возможность добавить сразу несколько ключей

autentifikatsiya-s-pomoshchyu-ssh-klyuchey-i-otklyuchenie-dostupa-po-parolyu-1.png

В дальнейшем, при заказе сервера, вы можете выбрать этот ключ.

autentifikatsiya-s-pomoshchyu-ssh-klyuchey-i-otklyuchenie-dostupa-po-parolyu-2.png

Если на своём сервере вы настроили доступ с помощью SSH ключей, то панель автоматически загрузит открытый ключ в файл ~/.ssh/authorized_keys на вашем сервере. Когда пользователь попытается подключиться к серверу с помощью SSH-ключей, то он проверяет клиента на наличие у него закрытого ключа. Таким образом происходит аутентификация.

Как сгенерировать ключи?

В Windows это можно сделать с помощью Putty, скачиваем программу и запускаем файл puttygen.exe. Тип ключа выбираем RSA, а длину 2048 бит, нажимаем Generate, при генерации произвольно водим курсором мыши.

autentifikatsiya-s-pomoshchyu-ssh-klyuchey-i-otklyuchenie-dostupa-po-parolyu-3.png

Сохраните сгенерированную пару ключей на компьютере, для этого используйте кнопки Save public key и Save private key. Не забудьте защитить закрытый ключ секретной фразой/паролем (необходимо ввести в поле Key passphrase/Confirm passphrase). Скопируйте сгененированный публичный ключ и вставьте его в соответствующее поле нашей панели управления.

autentifikatsiya-s-pomoshchyu-ssh-klyuchey-i-otklyuchenie-dostupa-po-parolyu-4.png

В Linux или MacOS откройте терминал и выполните следующую команду

ssh-keygen -t rsa

Вы увидите следующий ответ компьютера

Enter file in which to save the key (/root/.ssh/id_rsa):

Вам необходимо нажать на клавишу Enter и ввести фразу/пароль для дополнительной защиты закрытого ключа, система попросит ввести его 2 раза

Enter passphrase (empty for no passphrase):

После этого ключ будет создан, а на консоль будет сообщение приблизительно такого содержания

Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
bf:9b:79:ca:9f:96:bb:4c:b9:67:e9:e6:4d:1f:30:e1 [email protected]
The key's randomart image is:
 --[ RSA 2048]---- 
|                 |
|                 |
|             .   |
|            . .  |
|        S    E   |
|         .   .o  |
|          . o. o.|
|         . * o=oo|
|          B*BOo o|
 ----------------- 

Чтобы получить открытый ключ вводим в терминале команду

cat ~/.ssh/id_rsa.pub

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

ssh root@[IP-адрес сервера]

Дополнительная защита сервера при использовании SSH ключей: отключение парольной аутентификации

ВНИМАНИЕ! Прежде чем выполнять этот пункт обязательно проверьте работу SSH ключей и входа на сервер по ним.

Если у вас вышло подключиться к серверу с помощью SSH-ключей, то в качестве дополнительной меры безопасности можно отключить аутентификацию через пароль. Для этого открываем конфигурационный файл демона SSH /etc/ssh/sshd_config и раскомментируем директиву PasswordAuthentication,  а также установим ей значение no.

PasswordAuthentication no

Сохраняем изменения и перезапускаем сервис

# Ubuntu/Debian
sudo systemctl restart ssh
# CentOS/Fedora
sudo service sshd restart

Настройка сервера

При установке SSH-сервер автоматически прописывается в автозагрузку. Управлять его запуском, остановкой или перезапуском можно с помощью команд:

sudo service ssh stop|start|restart 

Основной файл конфигурации SSH-сервера — файл /etc/ssh/sshd_config, доступный для чтения или редактирования только суперпользователю.
После каждого изменения этого файла необходимо перезапустить ssh-сервер для применения таких изменений.

Пример конфигурации SSH-сервера в Ubuntu по умолчанию2):

#     Пример конфигурации open-ssh сервера с русскими      #
#                      комментариями.                      #
#           Написан для http://help.ubuntu.ru              #
#                   by MadKox, 01.2022.                    #
#                                                          #
#                                                          #
# Условные обозначения:                                    #
# Под "по умолчанию" - подразумевается поведение sshd при  #
# неуказанной явно директиве. Стоит заметить, что в Ubuntu # 
# файл sshd_config уже содержит ряд настроек, которые      #
# являются настройками по умолчанию для именно для Ubuntu. #
# Такие настройки указаны в этом файле.                    #
#                                                          #
############################################################
################ Настройки адресов/портов и т.д. ###########
############################################################
#                                                          #
## Port ####################################################
#                                                          #
# Используемый порт. Можно указывать несколько, например:  #
# Port 22                                                  #
# Port 23                                                  #
# Port 24                                                  #
# Рекомендуется использовать нестандартный порт, т.к.      #
# стандартный часто сканируется ботами на предмет          #
# потенциальных "дырок". Может быть опущен, если задан     #
# через адрес. См. также параметр ListenAddress.           #
#                                                          #
Port 22
#                                                          #
## ListenAddress ###########################################
#                                                          #
# Сетевой адрес, на котором "слушает" сервер. Адрес можно  #
# записывать так:                                          #
# ListenAddress host|IPv4_addr|IPv6_addr                   #
# ListenAddress host|IPv4_addr:port                        #
# ListenAddress [host|IPv6_addr]:port                      #
# Если порт не задан, sshd будет слушать на этом адресе и  #
# на порту, указанному в опции Port. Если вы будете        # 
# использовать ListenAddress не указывая порт, то опция    #
# Port должна предшествовать опции ListenAddress. Если не  #
# указывать, то по умолчанию слушает на всех локальных     #
# адресах. Можно указывать несколько адресов.              #
#                                                          #
## AddressFamily ###########################################
#                                                          #
# Указывает, какое семейство IP адресов должно быть        #
# использовано sshd. Возможные варианты:                   #
# “any” - любые                                            #
# “inet” (только IPv4)                                     #
# “inet6” (только IPv6)                                    #
# По умолчанию - “any”.                                    #
AddressFamily inet
#                                                          #
## UseDNS ##################################################
#                                                          #
# Указывает, должен ли sshd проверять имя хоста и          #
# используя это имя сверять IP адрес переданный клиентом с #
# полученным от DNS.                                       #
# Значение по умолчанию - “yes”.                           #
#                                                          #
############################################################
############# Настройки доступа пользователей ##############
############################################################
#                                                          #
# Пустить/не пустить пользователя определяется директивами #
# DenyUsers, AllowUsers, DenyGroups, и AllowGroups.        #
# при этом, проверка проходит сверху - вниз по цепочке:    #
#                   ## DenyUsers ##                        #
#                          ||                              #
#                   ## AllowUsers ##                       #
#                          ||                              #
#                   ## DenyGroups ##                       #
#                          ||                              #
#                   ## AllowGroups ##                      #
# Принимаются только имена пользователей и групп, числовые #
# идентификаторы (UserID) - не распознаются. Корректная    #
# запись нескольких пользователей/групп по очереди, через  #
# пробел. Если записано в виде пользователь@хост - то      #
# пользователь и хост проверяются отдельно, это позволяет  #
# разграничить доступ определенных пользователей с         #
# определенных хостов. Стоит помнить, что директивы        #
# DenyUsers и AllowUsers принимают в качестве параметра    #
# имя пользователя, а DenyGroups и AllowGroups - имя       #
# группы. См. PATTERNS в man ssh_config для дополнительной #
# информации о формах записи имен пользователей и групп.   #
#                                                          #
## DenyUsers ###############################################
#                                                          #
# Список ПОЛЬЗОВАТЕЛЕЙ, которым НЕЛЬЗЯ пользоваться sshd.  #
# По умолчанию - не указан = не запрещен никто. Т.е. если  #
# тут указан пользователь, то ему будет отказано в доступе #
# к ssh серверу.                                           #
#                                                          #
## AllowUsers ##############################################
#                                                          #
# Список ПОЛЬЗОВАТЕЛЕЙ, которым МОЖНО пользоваться sshd,   # 
# По умолчанию - не указан = разрешено всем. Т.е. если     # 
# указан хотя бы один пользователь, ssh доступ к серверу   #
# доступен только для него.                                #
#                                                          #
## DenyGroups ##############################################
#                                                          #
# Список ГРУПП, которым НЕЛЬЗЯ пользоваться sshd.          #
# По умолчанию - не указан = не запрещена ни одна группа.  #
# Т.е. если указана хотя бы одна группа, то пользователям, #
# входящим в эту группу будет отказано в доступе к ssh     #
# серверу.                                                 #
#                                                          #
## AllowGroups #############################################
#                                                          #
# Список ГРУПП, которым МОЖНО пользоваться sshd.           #
# По умолчанию - не указан = разрешено всем. Т.е. если     #
# указана хотя бы одна группа, то только тем пользователям,#
# которые в нее входят будет разрешен доступ к ssh серверу.#
#                                                          #
############################################################
######### Опции определения состояния соединения ###########
############################################################
#                                                          #
## TCPKeepAlive ############################################
#                                                          #
# Указывает, нужно системе посылать TCP сообщения клиенту  #
# с целью поддержания соединения. Если посылать эти пакеты,#
# можно определить разрыв соединения. Однако это также     #
# означает, что соединение может быть разорвано в случае   #
# кратковременного перебоя в работе маршрутизации и        #
# некоторых это сильно раздражает. С другой стороны, если  #
# таких сообщений не посылать - сеансы на сервере могут    #
# длиться бесконечно, порождая пользователей - "призраков",#
# и пожирая ресурсы сервера. Значение по умолчанию - “yes”,#
# т.е. посылать такие сообщения. Для отключения отправки   #
# таких сообщений нужно задать значение “no”. Ранее эта    #
# опция называлась KeepAlive. Стоит заметить, что          #
# существуют более защищенные способы проверки состояния   #
# соединения (см. ниже).                                   #
#                                                          #
TCPKeepAlive yes
#                                                          #
## ClientAliveCountMax #####################################
#                                                          #
# Задает количество сообщений к клиентам, которые sshd     #
# посылает подряд, не получая какого либо ответа от        #
# клиента. Если пороговое значение будет достигнуто, а     #
# клиент так и не ответил - sshd отключит клиента, прервав #
# ssh сессию. Стоит отметить, что использование таких      #
# сообщений в корне отличается от директивы TCPKeepAlive.  #
# Сообщения к/от клиентов посылаются по зашифрованному     #
# каналу и поэтому не подвержены спуфингу. Сообщения же    #
# TCPKeepAlive спуфингу подвержены. Механизм client alive  #
# особо ценен в тех случаях, когда серверу и клиенту нужно #
# знать когда соединение стало неактивным. По умолчанию    #
# значение равно 3. В случае, если ClientAliveInterval     #
# задан равным 15 и ClientAliveCountMax оставлен по        #
# умолчанию, неотвечающие клиенты будут отключены примерно #
# через 45 секунд. Эта директива работает только для       #
# протокола ssh2.                                          #
#                                                          #
## ClientAliveInterval #####################################
#                                                          #
# Задает временной интервал в секундах. Если в течении     #
# этого интервала не было обмена данными с клиентом, sshd  #
# посылает сообщение по зашифрованному каналу,             #
# запрашивающее ответ от клиента. По умолчанию - 0, т.е.   #
# не посылать таких сообщений. Эта директива работает      #
# только для протокола ssh2.                               #
#                                                          #
############################################################
################ Общие опции аутентификации ################
############################################################
#                                                          #
## AuthorizedKeysFile ######################################
#                                                          #
# Указывает файл, в котором содержатся публичные ключи,    #
# используемые для аутентификации пользователей. Директива #
# может содержать маркеры вида %М, которые подставляются в #
# процессе установки соединения.                           #
# Определены следующие маркеры:                            #
# %% - заменяется литералом '%'                            #
# %h - заменяется домашней директорией                     #
# аутентифицируещегося пользователя                        #
# %u - заменяется именем аутентифицируещегося пользователя #
# Таким образом, файл с ключами может быть задан как       #
# абсолютным путем (т.е. один общий файл с ключами), так и #
# динамически - в зависимости от пользователя (т.е. по     #
# файлу на каждого пользователя).                          #
# По умолчанию - “.ssh/authorized_keys”.                   #
# Пример для файла ключа в домашней папке пользователя:    # 
# AuthorizedKeysFile %h/.ssh/authorized_key                #
# Пример для общего файла:                                 #
# AuthorizedKeysFile /etc/ssh/authorized_keys              #
# См. описание файла authorized_keys для большей           #
# информации.                                              #
#                                                          #
## ChallengeResponseAuthentication #########################
#                                                          #
# Указывает, разрешить ли аутентификацию вида вопрос-ответ #
# (challenge-response authentication). Поддерживаются все  #
# виды аутентификации из login.conf По умолчанию - “yes”,  #
# т.е. разрешить.                                          #
# В Ubuntu - выключена по соображениям безопасности.       #
#                                                          #
ChallengeResponseAuthentication no
#                                                          #
## HostbasedUsesNameFromPacketOnly #########################
#                                                          #
# Указывает, как сервер должен получать имя хоста клиента  #
# при схеме аутентификации, основанной на проверке хоста.  #
# Если задать "yes" - при проверке соответствия в файлах   #
# ~/.shosts, ~/.rhosts или /etc/hosts.equiv sshd будет     #
# использовать имя хоста, предоставленное клиентом.        #
# (выполняя реверсивное DNS распознование) Если задать "no"#
# - sshd будет ресолвить имя из самого TCP соединения.     # 
# По умолчанию - "no".                                     #
#                                                          #
## IgnoreRhosts ############################################
#                                                          #
# Запрещает использование файлов .rhosts и .shosts         #
# в процессе аутентификации, основанной на проверке хоста. #
# (RhostsRSAAuthentication или HostbasedAuthentication).   #
# Файлы /etc/hosts.equiv и /etc/ssh/shosts.equiv все еще   #
# используются.                                            #
# По умолчанию - “yes”.                                    #
#                                                          #
IgnoreRhosts yes
#                                                          #
## IgnoreUserKnownHosts ####################################
#                                                          #
# Указывает должен ли sshd игнорировать пользовательские   # 
# "известные хосты" - файл ~/.ssh/known_hosts в процессе   #
# аутентификации, основанной на проверке хоста             # 
# (RhostsRSAAuthentication или HostbasedAuthentication).   #
# По умолчанию - “no”.                                     #
#                                                          #
## PermitBlacklistedKeys ###################################
#                                                          #
# Указывает, стоит ли sshd принимать ключи, занесенные в   #
# черный список как скомпрометированные (known-compromised #
# keys (см. ssh-vulnkey)). Если задано значение “yes” -    #
# попытки аутентификации с такими ключами будут занесены в #
# журнал и приняты, если значение “no” - попытки           #
# аутентификации будут отвергнуты.                         #
# По умолчанию - “no”.                                     #
#                                                          #
## PermitEmptyPasswords ####################################
#                                                          #
# В случае разрешенной аутентификации с помощью пароля,    #
# указывает, возможен ли вход с пустым паролем.            #
# По умолчанию - “no”.                                     #
#                                                          #
PermitEmptyPasswords no
#                                                          #
## PermitRootLogin #########################################
#                                                          #
# Указывает, возможен ли ssh-вход под суперпользователем   #
# (root). Может принимать значения:                        #
# “yes” - суперпользователь может зайти. Применяется       #
# текущая глобальная схема аутентификации.                 #
#                                                          #
# “without-password” - суперпользователь может зайти.      #
# Парольная аутентификация для него будет отключена.       #
#                                                          #
# “forced-commands-only” - суперпользователь сможет зайти, #
# пользуясь аутентификацией на основе публичного ключа и   #
# только если передаст необходимую к исполнению комнаду.   #
# Это удобно для осуществления резервного копирования,     #
# даже в том случае, когда нормальный (т.е. не через ssh)  #
# вход суперпользователя запрещен. Все остальные методы    #
# аутентификации для суперпользователя будут заблокированы.#
#                                                          #
# “no” - суперпользователь не может использовать ssh для   #
# входа в систему.                                         #
#                                                          #
# Значение по умолчанию - “yes”.                           #
#                                                          #
PermitRootLogin yes
#                                                          #
## Protocol ################################################
#                                                          #
# Указывает, какой протокол должен использовать sshd.      #
# Возможные значения ‘1’ и ‘2’ - ssh1 и ssh2               #
# соответственно. Возможна одновременная запись, при       #
# которой значения следует разделять запятыми.             #
# По умолчанию - “2,1”.                                    #
# Стоит отметить, что порядок следования протоколов в      #
# записи не задает приоритет, т.к. клиент выбирает какой   #
# из нескольких предложенных сервером протоколов ему       #
# использовать.Запись "2,1" абсолютно идентична            #
# записи "1,2".                                            #
#                                                          #
Protocol 2
#                                                          #
## UsePAM ##################################################
#                                                          #
# Включает интерфейс PAM (Pluggable Authentication Module  #
# interface).Если задано значение "yes" - для всех типов   #
# аутентификации помимо обработки модуля сессии и аккаунта #
# PAM будет использоваться аутентификация на основе        #
# запроса-ответа (ChallengeResponseAuthentication и        #
# PasswordAuthentication) Т.к. аутентификация              #
# запросов-ответов в PAM обычно выполняет ту же роль,      #
# что и парольная аутентификация, вам следует отключить    #
# либо PasswordAuthentication, либо                        #
# ChallengeResponseAuthentication. Стоит отметить, что     #
# если директива UsePAM включена - вы не сможете запустить #
# sshd от имени пользователя, отличного от root.           #
# Значение по умолчанию - “no”.                            #
#                                                          #
UsePAM yes
#                                                          #
## PasswordAuthentication ##################################
#                                                          #
# Указывает, разрешена ли аутентификация с использованием  #
# пароля.                                                  #
# По умолчанию - “yes”.                                    #
#                                                          #
## HostKey #################################################
#                                                          #
# Указывает файл, содержащий закрытый хост-ключ,           #
# используемый SSH. По умолчанию - /etc/ssh/ssh_host_key   #
# для протокола ssh1 и /etc/ssh/ssh_host_rsa_key и         #
# /etc/ssh/ssh_host_dsa_key для протокола ssh2. Стоит      #
# отметить, что sshd не станет пользоваться файлом,        #
# который доступен кому либо, кроме пользователя. Можно    #
# использовать несколько файлов с ключами, ключи “rsa1” -  #
# для протокола ssh1 и “dsa”/“rsa” для протокола ssh2.     #
#                                                          #
HostKey /etc/ssh/ssh_host_rsa_key
HostKey /etc/ssh/ssh_host_dsa_key
#                                                          #
############################################################
########## Опции протокола SSH версии 1 (ssh1) #############
############################################################
# Настоятельно НЕ РЕКОМЕНДУЕТСЯ использовать протокол ssh1.#
# Протокол ssh2 намного более безопасен, чем ssh1          #
############################################################
#                                                          # 
## KeyRegenerationInterval #################################
#                                                          #
# Для протокола ssh1 - раз в определенное время            #
# автоматически генерируется новый временный ключ сервера  #
# (если он был использован). Это сделано для               #
# предотвращения расшифровки перехваченных сеансов,с целью #
# позже зайти с параметрами этих сеансов на машину и       #
# украсть ключи. Такой ключ нигде не хранится (хранится в  #
# оперативной памяти). Данная директива указывает период   #
# "жизни" ключа в секундах, после которого он будет        #
# сгенерирован заново. Если значение задать равным 0 -     #
# ключ не будет генерироваться заново.                     #
# По умолчанию значение - 3600 (секунд).                   #
#                                                          #
KeyRegenerationInterval 3600
#                                                          #
## RhostsRSAAuthentication #################################
#                                                          #
# Указывает, нужна ли аутентификация на основе файлов      #
# rhosts или /etc/hosts.equiv совместно с успешной         #
# аутентификацией хоста через RSA.                         #
# Актуально только для протокола ssh1.                     #
# По умолчанию - “no”.                                     #
#                                                          #
RhostsRSAAuthentication no
#                                                          #
## RSAAuthentication #######################################
#                                                          #
# Указывает, разрешена ли "чистая" RSA-аутентификация.     #
# Актуально только для протокола ssh1.                     #
# По умолчанию - “yes”.                                    #
#                                                          #
RSAAuthentication yes
#                                                          #
## ServerKeyBits ###########################################
#                                                          #
# Определяет число бит во временном ключе сервера для      #
# протокола ssh1. Минимальное значение 512.                #
# Значение по умолчанию - 1024.                            #
ServerKeyBits 768
#                                                          #
############################################################
########### Опции протокола SSH версии 2 (ssh2) ############
############################################################
#                                                          #
## Ciphers #################################################
#                                                          #
# Указывает алгоритмы шифрования, разрешенные для          #
# протокола ssh2. Несколько алгоритмов должны быть         #
# разделены запятыми. Поддерживаемые алгоритмы:            #
# “3des-cbc”, “aes128-cbc”, “aes192-cbc”, “aes256-cbc”,    #
# “aes128-ctr”, “aes192-ctr”, “aes256-ctr”, “arcfour128”,  #
# “arcfour256”, “arcfour”, “blowfish-cbc”, “cast128-cbc”.  #
# По умолчанию используются:                               #
# aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,arcfour128, #
# arcfour256,arcfour,aes192-cbc,aes256-cbc,aes128-ctr,     #
# aes192-ctr,aes256-ctr                                    #
#                                                          #
## HostbasedAuthentication #################################
#                                                          #
# Указывает, разрешена ли аутентификация, основанная на    #
# проверке хоста. Проверяется rhosts или /etc/hosts.equiv, #
# и в случае успеха, совместного с успешной проверкой      #
# публичного ключа, доступ разрешается. Данная директива   #
# одинакова с директивой RhostsRSAAuthentication и         #
# подходит только для протокола ssh2.                      #
# По умолчанию - "no".                                     #
#                                                          #
HostbasedAuthentication no
#                                                          #
## MACs ####################################################
#                                                          #
# Указывает допустимый алгоритм MAC (message               #
# authentication code). Алгоритм MAC используется          #
# протоколом ssh2 для защиты целостности данных. Несколько #
# алгоритмов должны быть разделены запятыми.               #
# По умолчанию используются:                               #
# hmac-md5,hmac-sha1,[email protected],hmac-ripemd160,   #
# hmac-sha1-96,hmac-md5-96                                 #
#                                                          #
## PubkeyAuthentication ####################################
#                                                          #
# Указывает, разрешена ли аутентификация на основе         #
# публичного ключа. Актуально только для протокола ssh2.   #
# По умолчанию - “yes”.                                    #
#                                                          #
PubkeyAuthentication yes
############################################################
#################### Опции GSSAPI ##########################
############################################################
#                                                          #
############ Применимо только для протокола ssh2 ###########
#                                                          #
## GSSAPIAuthentication ####################################
#                                                          #
# Указывает, разрешена ли аутентификация пользователя на   #
# основе GSSAPI. По умолчанию - "no", т.е. запрещена.      #
#                                                          #
## GSSAPIKeyExchange #######################################
#                                                          #
# Указывает, разрешен ли обмен ключами, основанный на      #
# GSSAPI. Обмен ключам при помощи GSSAPI не полагается на  #
# ssh ключи при верификации идентичности хоста.            #
# По умолчанию - "no" - т.е. обмен запрещен.               #
#                                                          #
## GSSAPICleanupCredentials ################################
#                                                          #
# Указывает, нужно ли автоматически уничтожать             #
# пользовательский кеш аутентификационных полномочий при   #
# завершении сеанса.                                       #
# По умолчанию - "yes" - т.е. нужно уничтожать.            #
#                                                          #
## GSSAPIStrictAcceptorCheck ###############################
#                                                          #
# Указывает, насколько строгой должна быть проверка        #
# идентичности клиента при аутентификации через GSSAPI.    #
# Значение "yes" заставляет клиента аутентифицироваться в  #
# принимающей хост-службе на текущем хосте. Значение "no"  #
# позволяет клиенту аутентифицироваться при помощи любого  #
# ключа служб.                                             #
# Значение по умолчанию - "yes".                           #
# Стоит заметить, что задание значения "no" может          #
# сработать только с редкими библиотеками Kerberos GSSAPI. #
#                                                          #
############################################################
################### Опции Kerberos #########################
############################################################
#                                                          #
## KerberosAuthentication ##################################
#                                                          #
# Указывает, требует ли пароль, предоставленный            #
# пользователем для аутентификации                         #
# (PasswordAuthentication) валидации в Kerberos KDC.       #
# Для использования этой опции серверу нужно               #
# удостовериться в истинности KDC. (Тhe server needs a     #
# Kerberos servtab which allows the verification of the    #
# KDC’s identity)                                          #
# По умолчанию - “no”.                                     #
#                                                          #
## KerberosGetAFSToken #####################################
#                                                          #
# Если активен AFS и пользователь получил Kerberos 5 TGT,  #
# пытаться ли получить AFS токен до того, как пользователь #
# получит доступ к своей домашней папке.                   #
# По умолчанию - “no”.                                     #
#                                                          #
## KerberosOrLocalPasswd ###################################
#                                                          #
# Указывает, как поступать в случае, если аутентификация   #
# через Kerberos завершилась неудачей. Если                #
# значение = "yes" - пароль будет проверен при помощи      #
# любого дополнительного локального механизма авторизации, #
# например - /etc/passwd.                                  #
# По умолчанию - “yes”.                                    #
#                                                          #
## KerberosTicketCleanup ###################################
#                                                          #
# Указывает, нужно ли автоматически уничтожать файл с      #
# кешем тикета пользователя по завершению сеанса.          #
# По умолчанию - “yes”.                                    #
#                                                          #
############################################################
################# Опции перенаправления ####################
############################################################
#                                                          #
## AllowAgentForwarding ####################################
#                                                          #
# Указывает, разрешить или запретить перенаправление       #
# ssh-agent'а. По умолчанию - “yes”, т.е. разрешить.       #
# Стоит заметить, что отключение перенаправления не        #
# увеличит безопасности пока пользователям также не будет  #
# запрещен shell доступ, т.к. они всегда смогут установить #
# свои собственные аналоги агента.                         #
#                                                          #
## AllowTcpForwarding ######################################
#                                                          #
# Указывает, разрешить или запретить перенаправление TCP.  #
# По умолчанию - “yes”, т.е. разрешить. Стоит заметить,    #
# что как и в случае с AllowAgentForwarding отключение     #
# перенаправления не увеличит безопасности, пока у         #
# пользователей будет консольный доступ, т.к. они смогут   #
# установить свои аналоги.                                 #
#                                                          #
#                                                          #
## GatewayPorts ############################################
#                                                          #
# Указывает, разрешать ли удаленным хостам доступ к        #
# перенаправленным портам. По умолчанию, sshd слушает      #
# соединения к перенаправленным портам только на локальном #
# интерфейсе (loopback). Это не дает другим удаленным      #
# хостам подсоединяться к перенаправленным портам. Можно   #
# использовать GatewayPorts, чтобы разрешить sshd это      #
# делать. Директива может принимать 3 значения:            #
# "no" - только loopback.                                  #
# "yes"- любые адреса.                                     #
# "clientspecified" - адреса указанные клиентом.           #
#                                                          #
## PermitOpen ##############################################
#                                                          #
# Указывает куда разрешено перенаправление TCP портов.     #
# Указание перенаправления должно принимать одну из        #
# следующих форм:                                          #
# PermitOpen host:port                                     #
# PermitOpen IPv4_addr:port                                #
# PermitOpen [IPv6_addr]:port                              #
# Несколько записей можно задать, разделяя их пробелами.   #
# Аргумент “any” можно использовать для снятия всех        #
# запретов на перенаправление портов. По умолчанию любое   #
# перенаправление разрешено.                               #
#                                                          #
## PermitTunnel ############################################
#                                                          #
# Указывает, разрешено ли перенаправление tun-устройств.   #
# Может принимать значения:                                #
# “yes”                                                    #
# “point-to-point” (3-й сетевой уровень)                   #
# “ethernet” (2-й сетевой уровень)                         #
# “no”                                                     #
# Значение “yes” разрешает одновременно и “point-to-point” #
# и “ethernet”. По умолчанию - “no”.                       #
#                                                          #
############################################################
################## Опции журналирования ####################
############################################################
#                                                          #
## SyslogFacility ##########################################
#                                                          #
# Задает код объекта журнала для записи сообщений в        #
# системный журнал от sshd. Возможные значения:            #
# DAEMON                                                   #
# USER                                                     #
# AUTH                                                     #
# LOCAL0                                                   #
# LOCAL1                                                   #  
# LOCAL2                                                   #
# LOCAL3                                                   #
# LOCAL4                                                   #
# LOCAL5                                                   #
# LOCAL6                                                   #
# LOCAL7                                                   #
# По умолчанию используется AUTH.                          #
#                                                          #
SyslogFacility AUTH
#                                                          #
## LogLevel ################################################
#                                                          #
# Задает уровень детальности журнала sshd.                 #
# Возможные варианты:                                      #
# SILENT                                                   #
# QUIET                                                    #
# FATAL                                                    #
# ERROR                                                    #
# INFO                                                     #
# VERBOSE                                                  #
# DEBUG                                                    #
# DEBUG1                                                   #
# DEBUG2                                                   #
# DEBUG3                                                   # 
# По умолчанию - INFO.                                     # 
# DEBUG и DEBUG1 эквивалентны друг другу.                  #
# DEBUG2 и DEBUG3 задают самые высокие уровни отладочного  #
# вывода. Запись логов с уровнем DEBUG угрожает            #
# приватности пользователей и не рекомендована.            #
#                                                          #
LogLevel INFO
#                                                          #
############################################################
################### Перенаправление X11 ####################
############################################################
#                                                          #
## X11Forwarding ###########################################
#                                                          #
# Указывает, разрешено ли перенаправление графической      #
# подсистемы X11. Может принимать значения “yes” или “no”. #
# По умолчанию - “no”.                                     # 
# Внимание - включение простого перенаправления Х11 -      #
# большой риск как для сервера, так и для клиентов, т.к. в #
# случае такого перенаправления прокси-дисплей sshd        #
# принимает соединения с любых адресов. Используйте        #
# директиву X11UseLocalhost для ограничения доступа к      #
# серверу перенаправления "иксов". Стоит отметить, что     #
# отключение перенаправления не даст гарантии, что         #
# пользователи не смогут перенаправлять Х11, т.к. имея     #
# консольный доступ они всегда установить свой             #
# перенаправлятель. Перенаправление Х11 будет              #
# автоматически отключено, если будет задействована        #
# директива UseLogin.                                      #
#                                                          #
X11Forwarding yes
#                                                          #
## X11UseLocalhost #########################################
#                                                          #
# Указывает, должен ли sshd ограничить область             #
# перенаправления Х11 локальным loopback адресом, или      #
# должен разрешить любые адреса. По умолчанию - sshd       #
# "сажает" сервер перенаправления Х11 на локальный адрес   #
# и задает часть переменной окружения DISPLAY, отвечающую  #
# за имя хоста как “localhost”. Стоит заметить, что        #
# некоторые старые клиенты Х11 могут не работать с такими  #
# настройками. По умолчанию - "yes", т.е. перенаправление  #
# ограничено локалхостом, значение - “no” - отключает      #
# ограничения.                                             #
#                                                          #
## XAuthLocation ###########################################
#                                                          #
# Указывает полный путь к программе xauth.                 #
# По умолчанию - /usr/bin/X11/xauth.                       #
#                                                          #
## X11DisplayOffset ########################################
#                                                          #
# Указывает номер первого дисплея, доступного sshd в       #
# качестве перенаправления X11. Это сделано для того,      #
# чтобы перенаправленные "иксы" не пересекались с          # 
# реальными. По умолчанию - 10.                            #
#                                                          #
X11DisplayOffset 10
#                                                          #
############################################################
################### Различные опции ########################
############################################################
#                                                          #
## LoginGraceTime ##########################################
#                                                          #
# Время, по прошествии которого сервер отключает           #
# пользователя, если тот не смог удовлетворительно         #
# залогиниться. Значение 0 - разрешает пользователю        #
# логиниться бесконечно. По умолчанию - 120 (секунд).      #
#                                                          #
LoginGraceTime 120
#                                                          #
## MaxAuthTries ############################################
#                                                          #
# Указывает максимальное число попыток аутентификации,     #
# разрешенное для одного соединения.                       #
# Как только число неудачных попыток превысит половину     #
# заданного значения, все последующие попытки будут        #
# заноситься в журнал. Значение по умолчанию - 6.          #
#                                                          #
## MaxSessions #############################################
#                                                          #
# Указывает максимальное число одновременных подключений   #
# для каждого сетевого соединения. По умолчанию - 10.      #
#                                                          #
## MaxStartups #############################################
#                                                          #
# Указывает максимальное число одновременных               #
# неавторизованных подключений к sshd. В случае, если      #
# число подключений превысит лимит - все дополнительные    #
# подключения будут сброшены до тех пор, пока текущие      #
# подключения не завершатся либо успешной авторизацией,    #
# либо истечением периода времени указанного в директиве   #
# LoginGraceTime. Значение по умолчанию - 10.              #
# Дополнительно, можно задать ранний сброс соединений,     #
# указав в качестве параметра три значения, разделенные    #
# двоеточием “start:rate:full” (например: "10:30:60").     #
# sshd отклонит попытку соединения с вероятностью равной   #
# “rate/100” (т.е. в нашем примере - 30%), если уже        #
# имеется “start” (10) неавторизованных соединений.        #
# Вероятность увеличивается линейно и любые попытки        #
# соединения будут отклонены, если число неавторизованных  #
# соединений достигнет значения “full” (60).               #
#                                                          #
## Compression #############################################
#                                                          #
# Указывает, разрешено ли сжатие данных. Может быть        #
# "yes" - сжатие разрешено.                                #
# "delayed" - сжатие отложено до тех пор, пока             #
# пользователь успешно не аутентифицируется.               #
# "no" - сжатие запрещено.                                 #
# По умолчанию - "delayed".                                #
#                                                          #
## UseLogin ################################################
#                                                          #
# Указывает, должен ли использоваться login для            #
# интерактивного сеанса. Значение по умолчанию - “no”.     #
# Стоит отметить, что login никогда не использовался для   #
# выполнения удаленных команд. Так же заметим, что         #
# использование login сделает невозможным использование    #
# директивы X11Forwarding, потому что login не знает, что  #
# ему делать с xauth. Если включена директива              #
# UsePrivilegeSeparation - она будет отключена после       #
# авторизации.                                             #
#                                                          #
## UsePrivilegeSeparation ##################################
#                                                          #
# Указывает, должен ли sshd разделять привилегии. Если да  #
# - то сначала будет создан непривилегированный дочерний   #
# процесс для входящего сетевого трафика. После успешной   #
# авторизации будет создан другой процесс с привилегиями   #
# вошедшего пользователя. Основная цель разделения         #
# привилегий - предотвращение превышения прав доступа.     #
# Значение по умолчанию - “yes”.                           #
#                                                          #
UsePrivilegeSeparation yes
#                                                          #
## StrictModes #############################################
#                                                          #
# Указывает должен ли sshd проверить режимы доступа и      #
# владения пользовательских папок и файлов перед тем, как  #
# дать пользователю войти. Обычно это объясняется тем, что #
# новички часто делают свои файлы доступными для записи    #
# всем подряд.По умолчанию - “yes”.                        #
#                                                          #
StrictModes yes
#                                                          #
## AcceptEnv ###############################################
#                                                          #
# Указывает, какие переменные окружения, переданные        #
# клиентом будут приняты. См. опцию SendEnv в клиенте.     #
# Стоит заметить, что передача переменных возможна только  #
# для протокола ssh2. Переменные указываются по имени,     #
# можно использовать маски (‘*’ и ‘?’). Можно указывать    #
# несколько переменных через пробел, или разбить на        #
# несколько строк AcceptEnv. Будьте осторожны - некоторые  #
# переменные окружения могут быть использованы для обхода  #
# запрещенных пользовательских окружений. Пользуйтесь этой #
# директивой аккуратно. По умолчанию никакие               #
# пользовательские переменные окружения не принимаются.    #
#                                                          #
AcceptEnv LANG LC_*
#                                                          #
## PermitUserEnvironment ###################################
#                                                          #
# Указывает, должен ли sshd воспринимать                   #
# ~/.ssh/environment и опцию environment= в                #
# ~/.ssh/authorized_keys. По умолчанию - “no”. Стоит       #
# заметить, что разрешение обработки окружения может дать  #
# пользователям возможность обойти ограничения в некоторых #
# конфигурациях, использующих такие механизмы, как         #
# LD_PRELOAD.                                              #
#                                                          #
#                                                          #
## PidFile #################################################
#                                                          #
# Указывает файл, содержащий идентификатор процесса        #
# (process ID, PID) демона SSH.                            #
# По умолчанию - /var/run/sshd.pid                         #
#                                                          #
#                                                          #
## PrintLastLog ############################################
#                                                          #
# Указывает, должен ли sshd выводить на экран дату и время #
# последнего севнса при интерактивном входе пользователя.  #
# По умолчанию - “yes”.                                    #
#                                                          #
PrintLastLog yes
#                                                          #
## PrintMotd ###############################################
#                                                          #
# Указывает, должен ли sshd выводить на экран /etc/motd    #
# при интерактивном входе пользователя. На некоторых       #
# системах (например в Ubuntu) эта информация так же       #
# выводится на экран оболочкой.                            #
# Значение по умолчанию - “yes”.                           #
#                                                          #
PrintMotd no
#                                                          #
## Banner ##################################################
#                                                          #
# Указывает какой файл содержит текстовый баннер, который  #
# будет показан пользователю ПЕРЕД процедурой              #
# аутентификации. Опция доступна только для протокола ssh2.#
# По умолчанию - не показывает ничего.                     #
# В Ubuntu файл issue.net содержит фразу Ubuntu {version}, #
# например, для karmic это "Ubuntu 9.10". Можно            #
# использовать для дезориентации возможных атакующих,      #
# написав туда например "My D-Link Interet Router" =)      #
#                                                          #
Banner /etc/issue.net
#                                                          #
## ChrootDirectory #########################################
#                                                          #
# Если указан - предоставляет путь, по которому будет      #
# выполнен chroot после аутентификации. Путь и все его     #
# содержимое должны соответствовать принадлежащим          #
# суперпользователю папкам и быть не доступными для        #
# записи другими пользователями.                           #
# В пути могут быть указаны метки, подставляемые в         #
# процессе аутентификации:                                 #
# %% - заменяется литералом '%'                            #
# %h - заменяется домашней директорией                     #
# аутентифицируещегося пользователя                        #
# %u - заменяется именем аутентифицируещегося пользователя #
# chroot-папка должна содержать все необходимые файлы и    #
# папки для пользовательского сеанса. Для интерактивного   #
# сеанса нужны как минимум:                                #
# оболочка, обычно - sh                                    #
# базовые устройства в /dev, такие как:                    #
# null, zero, stdin, stdout, stderr, arandom и tty         #
# для сеанса передачи данных при помощи sftp никаких       #
# дополнительных настроек не нужно, если используется      #
# внутренний процесс sftp сервера. См. Subsystem для       #
# большей информации. По умолчанию chroot не выполняется.  #
#                                                          #
## ForceCommand ############################################
#                                                          #
# Заставляет выполняться указанную команду. Игнорирует     #
# любые команды переданные клиентом или записанные в       #
# ~/.ssh/rc. Команда вызывается из пользовательской        #
# оболочки с опцией -с. Подходит для запуска оболочки,     #
# команды или подсистемы. Наиболее полезна внутри блока    #
# Match. Команда, изначально переданная клиентом, хранится #
# в переменной окружения SSH_ORIGINAL_COMMAND. Если        #
# указать команду "internal-sftp", будет запущен           #
# внутренний sftp сервер, которому не нужны дополнительные #
# файлы и папки, описанные в директиве ChrootDirectory.    #
#                                                          #
## Subsystem ###############################################
#                                                          #
# Определяет и настраивает внешнюю подсистему (например    #
# демона передачи файлов - file transfer daemon).          #
# Аргументами служат имя и команда (с возможными           #
# аргументами), которая будет выполнена во время запроса   #
# на подсистемы. Команда sftp-server  запускает “sftp” -   #
# подсистему передачи файлов. Дополнительно можно указать  #
# в качестве подсистемы “internal-sftp” - что запустит     #
# внутренний sftp сервер. Это может значительно упростить  #
# настройку в случае использования директивы               #
# ChrootDirectory По умолчанию никаких подсистем           #
# не вызывается. Актуально только для протокола ssh2.      #
#                                                          #
Subsystem sftp /usr/lib/openssh/sftp-server
#                                                          #
############################################################
##################### Блок Match ###########################
############################################################
#                                                          #
# Специально вынес в конец файла, чтобы было удобнее       #
# писать Match правила.                                    #
#                                                  MadKox. #
#                                                          #
# Директива Match представляет собой начало условного      #
# блока. Если выполнены все критерии, указанные в строке   #
# Match, директивы в последующих строках блока выполняются,#
# позволяя обойти значения глобальных директив файла       #
# sshd_config для случая, являющегося критерием директивы  #
# Match. Блоком считаются все строки, идущие после строки  #
# с критерием (Match - строки) до следующей match-строки   #
# или до конца файла. Аргумент директивы Match - одна или  #
# несколько пар записей критериев. Возможные виды записей: #
# User                                                     #
# Group                                                    #
# Host                                                     #
# Address                                                  #
# Записи могут содержать как одиночные значения            #
# (например User=user), так и несколько значений,          #
# разделенные запятыми (User=user1,user2). Так же могут    #
# быть использованы регулярные выражения, описанные в      #
# секции PATTERNS файла ssh_config. Записи в критерии      #
# Address могут содержать адреса в нотации CIDR            #
# (Адрес/Длинна маски, например “192.0.2.0/24” или         #
# “3ffe:ffff::/32”). Стоит заметить, что представленная    #
# длинна маски должна соответствовать адресу, и слишком    #
# длинные/короткие для адреса не будут работать.           #
# В качестве директив Match может использовать только      #
# определенный набор директив:                             #
# AllowTcpForwarding                                       #
# Banner                                                   #
# ChrootDirectory                                          #
# ForceCommand                                             #
# GatewayPorts                                             #
# GSSAPIAuthentication                                     #
# HostbasedAuthentication                                  #
# KbdInteractiveAuthentication                             #
# KerberosAuthentication                                   #
# MaxAuthTries                                             # 
# MaxSessions                                              #
# PasswordAuthentication                                   #
# PermitOpen                                               #
# PermitRootLogin                                          #
# RhostsRSAAuthentication                                  #
# RSAAuthentication                                        #
# X11DisplayOffset                                         #
# X11Forwarding                                            #
# X11UseLocalHost                                          #

Можно скопировать приведенный выше текст в ваш собственный sshd_config и использовать в дальнейшем для настройки.

Похожее:  СМС авторизация на сайте, в приложении и программе лояльности | Сервис отправки паролей через SMS

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *