Блог ИТ склеротика. SSH сервер на Debian

Страницы

Расширенный поиск в статьях блога

2 сентября 2012 г.

SSH сервер на Debian

Как становится понятно из названия, SSH сервер основан на работепротокола SSH. Существуют несколько реализация данного сервера (dropbear, lsh-server, openssh-server, ssh и др.), в данной статье я буду рассматривать реализацию сервера OpenSSH на Debian Squeeze. Протокол SSH изначально являлся проприетарным коммерческим и пережил 2 реализации. В 1995 г. была разработана версия протокола SSH-1, в 1996 г. разработали версию SSH-2(используется по настоящее время), не совместимую с SSH-1.
SSH — это протокол сеансового (транспортного) уровня, использует для работы 22/tcp порт. OpenSSH предлагает два уровня идентификации: идентификация сервера и идентификацию клиента (пользователя). В-первых, клиент проверяет, что подсоединен к требуемому серверу.  Затем OpenSSH шифрует все данные, передаваемые между системами. Во-вторых, как только защищенная шифрованная связь установлена, SSH убеждается в авторизации пользователя для входа в систему (или для копирования файлов с системы и на нее). Как только система  сервер и пользователь проверены, SSH разрешает службам пользоваться созданным соединением. Установленное соединение может использоваться для интерактивной работы в bash (утилита ssh), удаленного выполнение каких-либо команд (опять же утилита ssh и scp), а так же туннелирование портов TCP/IP.
В своей работе SSH задействует следующие типы шифрования: аутентификация производится с использованием асимметричного шифрования с открытым ключом (версия SSH1 - RSA, SSH2 - RSA/DSA). Обмен данными во время установленного соединения -симметричное шифрование (IDEA - патентованный, DES, triple DES (3DES), ARCFOUR, BLOWFISH, CAST128, AES/Rijndael). Целостность переданных данных проверяется с помощью CRC32 в версии SSH1 и HMAC-SHA1/HMAC-MD5 - в SSH2. Для сжатия шифруемых данныхможет использоваться алгоритм LempelZiv (LZ77), который обеспечивает такой же уровень сжатия, что и архиватор ZIP.  Спецификация протокола SSH-2 описана в RFC 4251.
Ранее (в SSH1) установка соединения происходила так: при первом подключении клиента к серверу (сервер в данном примере имеется ввиду - компьютер, на котором работает демон sshd), клиент получал от сервера публичный ключ и сохранял его всобственной базе. При следующих соединениях клиент проверял не изменился ли данный ключ. Делее, клиент генерировал произвольный 256-битный набор символов и зашифровывал этот набор публичным ключом. Сервер расшифровывал данную фразу и отправлял клиенту. Клиент, убедившись, что расшифрованная фраза валидна - устанавливал соединение и данная фраза использовалась далее клиентом и сервером как сессионный ключ для шифрования передаваемых данных.
В современной реализации (SSH2) используется гораздо более сложный алгоритм (алгоритм Diffie-Hellman'а, описанный в rfc4419).
Архитектуру протокола SSH можно разделить на несколько уровней:
Транспортный уровень RFC 4253 - работает поверх протокола TCP, обеспечивает начальный обмен ключами, устанавливает шифрование, сжатие и проверку целостности.  Уровень аутентификации RFC 4252 - работает поверх транспортного уровня, обеспечивает аутентификацию клиента и сервера. Наиболее популярные методы аутентификации ssh:





  • Парольная - метод на основе простого ввода пароля.
  • Публичный ключ - метод на основе публичного RSA/DSA ключа
  • Интерактивный - метод, когда сервер посылает один или несколько запросов ввода информации клиенту, а клиент отображает их и отправляет обратно серверу ответы введенные пользователем. Используется при одноразовых паролях аутентификации.
  • GSSAPI - методы аутентификации, которые обеспечивают аутентификацию с использованием внешних механизмов, таких как Kerberos 5 или NTLM.
  • Протокол соединения RFC 4254 -  работает поверх протокола аутентификации, позволяет использовать установленный безопасный канал для передачи нескольких потоков информации в обоих направлениях. Используется для работы в шелле, туннелирования трафика или копирования файлов.
    В Debian OpenSSH представлен несколькими пакетами:
    gw ~ # aptitude search openssh
    ...
    i openssh-client - клиент протокола SSH, для защищённого удалённого доступа
    i openssh-server - серверная часть протокола SSH, для защищённого удалённого доступа
    основные - это openssh-server и openssh-client. При этом, последний чаще всего устанавливается вместе с системой. Итак, чтобыустановить ssh сервер в Debian Squeeze, достаточно выполнить команду:
    Как установить ssh сервер на Debian
    Во время выполнения установки будут автоматически сгенерированы необходимые ключи шифрования (RSA и DSA), демон sshd будет добавлен в автозагрузку и запущен. На этом по большому счету, можно считать сервер SSH вполне работоспособным. Но настройки по умолчанию, не совсем корректны и безопасны.
    OpenSSH в реализации Debian содержит следующие компоненты/команды:
    ssh (/usr/bin/ssh)
    Собственно, клиент ssh.
    scp (/usr/bin/scp)
    Клиент для удаленного копирования файлов по протоколу SSH.
    sftp (/usr/bin/sftp)
    FTP-подобный SSH клиент.
    sshd (/usr/sbin/sshd)
    Демон, собственно предоставляющий защищённый доступ к ресурсам.
    sftp-server ( /usr/lib/openssh/sftp-server)
    Отдельная реализация подсистемы SFTP (серверная часть). Обладает бОльшими возможностями, чем встроенная в sshd.
    ssh-keygen (/usr/bin/ssh-keygen)
    Генератор пар ключей.
    ssh-keysign (/usr/lib/openssh/ssh-keysign)
    Утилита для проверки ключей хостов. Задействуется при использовании аутентификации по хостам (аналогично rsh) вместо проводимой по умолчанию аутентификации по пользователям/паролям.
    ssh-keyscan (/usr/bin/ssh-keyscan)
    Вспомогательная утилита. Позволяет за считанные секунды собрать публичные ключи с других хостов.
    ssh-agent (/usr/bin/ssh-agent)
    Вспомогательная утилита. Поддерживает кэш закрытых ключей. Кэширование позволяет избегать частого ввода пароля для расшифровки ключей перед их использованием.
    ssh-add (/usr/bin/ssh-add)
    Вспомогательная утилита. Добавляет ключи в кэш ssh-agent.
    Клиенты SSH
    Настройка клиента заключается в правке файлов (например с помощью редактора vim) /etc/ssh/ssh_config  и ~/.ssh/config, при этом, последний имеет бОльший приоритет. Описание данного файла приведено в  man (5) ssh_config. Чаще всего, настройки клиента нет необходимости изменять. Для того, чтобы удачно воспользоваться SSH клиентом по назначению, необходимо: иметь сервер с выполняющимся демоном sshd, иметь учетную запись на удаленной системе. В Debian наиболее часто используемый клиент, это утилита ssh (пакет openssh-client). Формат использования команды приведен в man ssh. Кратко, формат команды ssh имеет вид:
    $ ssh [options] [user@]host [command]
    Первая часть - это собственно команда ssh, далее возможны опции (например -p port задаст нестандартный порт), далее возможно указание имени пользователя от имени которого необходимо залогинется на удаленную систему. Если имя пользователя не указано, то соединение будет установлено от имени текущего пользователя. Далее идет обязательный параметр - DNS имя или IP удаленного хоста. Если осле имени хоста заданна какая-то команда, то эта команда будет выполнена и соединение будет разорвано, если команда не задана, то будет запущен интерпретатор.
    При первоначальном подключении к серверу, ssh клиент выдает примерно следующее сообщение:
    [root@proxy ~]# ssh 10.0.0.10
    The authenticity of host '10.0.0.10 (10.0.0.10)' can't be established.
    RSA key fingerprint is 30:77:af:cb:e9:1a:20:f4:58:0d:d7:7e:a0:07:89:53.
    Are you sure you want to continue connecting (yes/no)? yes
    Warning: Permanently added '10.0.0.10' (RSA) to the list of known hosts.
    root@10.0.0.10's password:
    Данное сообщение говорит нам, что мы подключаемся к неизвестному ранее хосту с RSA ключем, имеющим такой-то отпечаток и требуется подтверждение нашего подключения. При положительном ответе (yes), клиент добавляет публичный ключ сервера sshd(/etc/ssh/ssh_host_rsa_key.pub) в пользовательский файл ~/.ssh/known_hosts на локальном компьютере. Когда клиент соединяется с несколькими серверами в указанном файле может скопиться большое количество таких ключей. Для отслеживания принадлежности каждого ключа к каждому серверу, клиент добавляет к строке ключа IP сервера и тип шифрования.
    Кроме указанного пользовательского файла для "известных
    хостов
      серверов" существует так же глобальный файл/etc/ssh/ssh_known_hosts. К глобальному файлу должны иметь доступ на чтение все пользователи и использовать информацию при подключении к какому-либо серверу, но на запись должен иметь право только пользователь root. Как разграничить права доступа к файлам. Давайте рассмотрим содержимое файла  known_hosts  на примере:
    [root@proxy ~]# grep .10 .ssh/known_hosts
    10.0.0.10 ssh-rsa AAAAB3NzkejbdPP1p3KEzrONUppLn4ICCyMAQDiK5coYST2/BH/\
    +vBBXhlj1LZkZFFtdkxVvRBxPhm7pbqRAxij9u/vfEe62yaLncb567sZOm1YG/\
    y4aYGB8IdjUkejbdPP1p3KEzrONUppLn4ICCyM54QUjLQ3V7l+PDK500tM4OpPg/\
    qLaaAQfMkejbdPP1p3KEzrONUppLn4ICCyMGqU+5E0+aOKHg7rXC1lW7LXdI4kq\
    JHgydysgaiD78cGR2KaurQr3Zz02me4CtS9uuLoBkv5b9LCbQdX6OWyGgwbyp14x\
    Y9tWFny4E3VDSctaaO5ie6pUBzs3ica0wxErFc/+cyjvpXTxLU7nkNqdaWBjMkfCggz8tVJt
    В примере  строка намеренно разбита на несколько, но реально это одна строка. Кроме команды ssh в OpenSSH существует команда scp, которая по синтаксису очень похожа на cp, за тем исключением, что к пути копируемого объекта добавляются некоторые параметры:
    $ scp [[user@]src_host:]\path\src\file [[user@]dst_host:]\path\dst\file
    , где src_host - хост источник, \path\src\file - исходный копируемый объект, dst_host - хост назначения, \path\dst\file - файл назначения.
    Алиасы для ssh клиента (~/.ssh/config)
    С помощью конфигурационного файла пользователя можно сделать использование ssh клиента более удобным. Допустим, имеем мы некоторый глобальный файл /etc/ssh/ssh_config, задающий настройки для всех хостов (host *). При этом, имеем некоторый удаленный ssh сервер, у которого длинное имя (например 678-ssh-server.superdomen.com.ua) и нестандартный порт (например 65987), при этом, имя пользователя тоже довольно длинное (например, vasilii-ptrov). Вводить каждый раз команду подключения к серверу:
    $ ssh -p 65987 vasilii-ptrov@678-ssh-server.superdomen.com.ua
    жутко неудобно и долго. Давайте упростим себе жизнь. В файл ~/.ssh/config добавим следующую информацию:
    Host server
    User vasilii-ptrov
    Port 65987
    HostName 678-ssh-server.superdomen.com.ua
    Все! теперь введя в консоли ssh server мы попадаем на нужный сервер, нужны порт под нужным пользователем. Или даже так ssh se<Tab>. Строка автоматически развернется в ssh server!
    Другие клиенты SSH
    Кроме стандартного linux-ssh-клиента существует и множество других, например для Windows есть отличная софтина PuTTy.
    Сервер OpenSSH (sshd)
    Настройка sshd заключается в правке файла (например с помощью редактора vim) /etc/ssh/sshd_config. Описание файла приведено вman (5) sshd_config. Ознакомившись с конфигом мы можем смело настроить сервер под свои нужны. Некоторые рекомендации и примеры приведены ниже. После правки sshd_config  необходимо перезапустить сервер sshd:
    root@debian:~# /etc/init.d/ssh restart
    Restarting OpenBSD Secure Shell server: sshd.
    В OpenSSH временно можно запретить любые подключения к серверу, кроме пользователя root. Для этого, необходимо создать файл /etc/nologin. при существовании данного файла, сервер sshd выводит его ~/.ssh/содержимое и не позволяе/strong/strongт произвести вход для любого пользователя кроме пользователя root.
    Типы аутентификации OpenSSH
    Аутентификация пользователя по паролю.
    При данном типе аутентификации, настроек сервера sshd и клиента ssh по-умолчанию вполне достаточно. При аутентификации сначала производится обмен ключами между сервером и клиентом и хэш пароля передается серверу в зашифрованном виде. Далее производится обмен данными.
    Аутентификация пользователя по его публичному ключу.
    Данный тип аутентификации может избавить от ввода пароля при подключении к серверу. Аутентификация по публичному ключу основана на проверке соответствия публичного ключа клиента, который размещается на сервере и секретного ключа клиента (пользователя), который расположен у клиента (у пользователя в домашнем каталоге ~/.ssh/id_rsa ). Примерно так же, как клиент проверяет валидность сервера по публичному ключу сервера. Генерация пары ключей осуществляется утилитой ssh-keygen, после чего в каталоге пользователя образуется 2 ключа  ~/.ssh/id_rsa - секретный и  ~/.ssh/id_rsa.pub  - публичный. Публичный ключпомещается на сервер под именем  ~/.ssh/authorized_keys. После этого при подключении к серверу под пользователем, в каталогах которого лежат соответствующие ключи (на клиенте -  ~/.ssh/id_rsa, на сервере -  ~/.ssh/authorized_keys) - нет необходимости вводить пароль. В файле ~/.ssh/authorized_keys может последовательно содержаться несколько ключей для доступа к данному серверу под данным пользователем с нескольких серверов. Давайте рассмотрим практический пример настройки аутентификации по публичному ключу:
    mc-sim@FILES:~$ ssh-keygen -t rsa -b 2048
    Generating public/private rsa key pair.
    (Генерация пары открытый/секретный rsa-ключей.)
    Enter file in which to save the key (/home/mc-sim/.ssh/id_rsa):<Enter>
    (Введите имя файла, в который будет сохранен ключ (путь по умолчанию))
    Enter passphrase (empty for no passphrase):<Enter>
    (Введите кодовую фразу (пусто, если фраза не используется):)
    Enter same passphrase again:
    (Повторите ввод фразы:)
    Your identification has been saved in /home/mc-sim/.ssh/id_rsa.
    (Ваша идентификационная информация сохранена в /home/mc-sim/.ssh/id_rsa.)
    Your public key has been saved in /home/mc-sim/.ssh/id_rsa.pub.
    (Ваш публичный ключ сохранен в файле /home/mc-sim/.ssh/id_rsa.pub.)
    The key fingerprint is:
    (Контрольная сумма ключа:)
    fc:dd:1a:8d:2e:19:b2:36:63:fe:0a:e7:3c:85:a7:e8 mc-sim@FILES
    The key's randomart image is:
    (Случайное изображение ключа:)
    +--[ RSA 2048]----+
    | |
    | |
    | |
    | . |
    | S. |
    | o.+. + |
    | ...*.o+ o |
    | .=O o. o |
    | .E+=*..o |
    +-----------------+
    mc-sim@FILES:~$ # проверим созданные ключи
    mc-sim@FILES:~$ ls -la .ssh/
    итого 16
    drwx------ 2 mc-sim mc-sim 4096 Фев 11 02:42 .
    drwxr-xr-x 4 mc-sim mc-sim 4096 Фев 11 02:41 ..
    -rw------- 1 mc-sim mc-sim 1675 Фев 11 02:42 id_rsa
    -rw-r--r-- 1 mc-sim mc-sim 394 Фев 11 02:42 id_rsa.pub
    mc-sim@FILES:~$ # скопируем наш публичный ключ на удаленный сервер
    mc-sim@FILES:~$ scp .ssh/id_rsa.pub 10.0.0.6:/home/mc-sim/.ssh/authorized_keys
    The authenticity of host '10.0.0.6 (10.0.0.6)' can't be established.
    RSA key fingerprint is 8c:7b:98:51:2e:57:c9:53:54:aa:7d:bb:a6:92:c9:94.
    Are you sure you want to continue connecting (yes/no)? yes
    Warning: Permanently added '10.0.0.6' (RSA) to the list of known hosts.
    mc-sim@10.0.0.6's password:
    scp: /home/mc-sim/.ssh/authorized_keys: No such file or directory
    (scp: /home/mc-sim/.ssh/authorized_keys: Нет такого файла или каталога)
    mc-sim@FILES:~$ # создадим отсутствующий каталог
    mc-sim@FILES:~$ ssh 10.0.0.6 mkdir /home/mc-sim/.ssh
    mc-sim@10.0.0.6's password:
    mc-sim@FILES:~$ # еще раз попробуем скопировать публичный ключ
    mc-sim@FILES:~$ scp .ssh/id_rsa.pub 10.0.0.6:/home/mc-sim/.ssh/authorized_keys
    mc-sim@10.0.0.6's password:
    id_rsa.pub 100% 394 0.4KB/s 00:00
    mc-sim@FILES:~$ # попробуем подключиться к удаленной системе (пароль запрошен не будет)
    mc-sim@FIpLES:~$ ssh 10.0.0.6
    Linux ARCHIV 3.0.0-1-486 #1 Sat Aug 27 15:56:48 UTC 2011 i686
    The programs included with the Debian GNU/Linux sysptem are free software;
    the exact distribution tessh-keysign (/usr/lib/openssh/ssh-keysign)rms for each program are described in theppp
    individual files in /usr/share/doc/*/copyright.
    Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
    permitted by applicable law.
    You have new mail.
    Last login: Fpri Nov 25 13:17:58 2011
    mc-sim@ARCHIV:~$ logout
    Connection to 10.0.0.6 closed.
    Для указания типа шифрования ключа задан параметр -t, а так же параметр -b, задающий размер ключа в байтах. Эти опции использовать рекомендуется. Кроме того, при создании ключа запрашивается некая passphrase. Это пароль расшифровки секретного ключа, который (если его задать) будет запрошен при попытке подключения. Данная опция позволяет зашифровать секретный ключ на случай компроментации, что повышает безопасность, но сводит на нет все удобство входа без ввода пароля.
    Так же, обязательно стоит отметить такой момент безопасности. В случае, если поломают вашу учетку (у которой имеется секретный ключ в домашнем каталоге) на текущем сервере, то злоумышленник автоматически получает доступ и к серверу, на котором лежит соответствующий публичный ключ. Так что будьте крайне бдительны!
    В данном разделе используется метод шифрования RSA, но если во всех командах заменить RSA на DSA, то соответственно будет использован тип шифрования DSA.
    Другие типы аутентификации (hostbsed, GSSAPI...)
    Некоторые другие типы аутентификации, возможно, в скором времени будут дополнены. Но некоторые гарантированно не будут рассмотрены, т.к. - устаревшие. Например не будет рассмотрена hostbased-аутентификация, которая работает только с протоколом SSH1.
    Безопасность SSH сервера
    Ниже приведены некоторые советы, позволяющие по максимуму снизить возможность взлома Вашего сервера:




  • Необходимо запретить логин под пользователем root (параметр PermitRootLogin no в sshd_config ).
  • Запрещение подключения с пустым паролем (параметр PermitEmptyPasswords no в sshd_config).
  • Ограничить список пользователей, которым будет доступно подключение через ssh (параметр AllowUsers ssh_user1 ssh_user2в  sshd_config).
  • По возможности использовать аутентификацию на основе открытого ключа и не использовать вход по паролю, особенно с недоверенных машин (параметр  PubkeyAuthentication yes в  sshd_config) .
  • Запуск sshd на нестандартном порту, желательно из эфемерного диапазона - для Linux 32768 — 61000  (параметр Port 35571 в sshd_config)
  • Желательно отключить использование протокола SSH1 (параметр  Protocol 2 в sshd_config ).
  • Время неактивности при установленном соединении желательно уменьшить о минимума. 60 секунд на ввод пароля, думаю, вполне достаточно (параметр  LoginGraceTime 60 в sshd_config).
  • Использование длинных SSH2 RSA-ключей (2048 бит и более). Системы шифрования на основе RSA считаются надёжными, если длина ключа не менее 1024 бит.
  • Для доступа по ssh не использовать широко распространенные имена пользователей (например user, admin).
  • Запуск sshd рекомендуется производить с параметрами: -u0 -4. Эти параметры запретят запись в лог DNS-имен клиентов (-u0), то есть будут записываться IP адреса. А так же параметр -4 заставит демон обрабатывать только IPv4 запросы. Для задания параметров запуска sshd используется файл /etc/default/ssh.
  • Как вариант, можно отображать баннер всем, кто пытается подключиться. В некоторых случаях это заставит задуматься злоумышленника. Например следующего содержания (параметр Banner /etc/motd.ssh в sshd_config ):
  • # cat /etc/motd.ssh
    ************************************************************
    This is a private server!!! All ssh login attempts are logged and
    monitored by our staff. All unauthorized login attempts will be
    investigated and repoeted to local authorities.
    If you have any login problem please contact helpdesk us at
    Phone: 888-555-777 or email us
    Email: ssh@example.com
    *************************************************************
  • Защита сервера с помощью netfilter/iptables. Пример ниже.

  • Пример настройки iptables для защиты ssh от перебора паролей ( bruteforce-атак):
    # Создаем цепочку для проверки попыток соединений на защищаемый порт
    iptables -N ssh_brute_check
    # Если за последние 10 минут (600 секунд) с одного адреса было 4 или более новых соединений — блокируем этот адрес
    iptables -A ssh_brute_check -m conntrack --ctstate NEW -m recent --update --seconds 600 --hitcount 4 -j DROP
    # В противном случае — разрешаем, и при этом заносим в список
    iptables -A ssh_brute_check -m recent --set -j ACCEPT
    # Очищаем цепочку INPUT (если необходимо)
    iptables -F INPUT
    # Разрешаем входящие пакеты по установленным соединениям
    iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
    # Все попытки открыть новое соединение по порту 22 (ssh) направляем на проверку в созданную цепочку
    iptables -A INPUT -m conntrack --ctstate NEW -p tcp --dport 22 -j ssh_brute_chec
    # устанавливаем по-умолчанию запрещающую политику
    iptables -P INPUT DROP
    Согласно данных правил, все попытки открыть новое SSH-соединение проверяются, и с одного IP-адреса можно открывать не более 3 соединений за 10 минут. Обратите внимание, что за одно соединение злоумышленник может проверить несколько паролей — число попыток аутентификации до обрыва соединения задает параметр MaxAuthTries в файле /etc/ssh/sshd_config. По умолчанию это число равно 6, так что в нашем примере злоумышленник сможет проверять не более 12 паролей за 10 минут. (c) http://ru.wikibooks.org/wiki/Iptables
    Траблешуттинг
    Системные журналы
    Существует несколько мест, куда можно обратиться за разрешением проблем с ssh. Для начала, можно посмотреть записи, относящиеся к ssh в журналах /var/log/autch.log и /var/log/syslog. Вот небольшой пример, когда сервер работал на стандартном порту, каждую минуту из интернета были попытки подобрать пароль:
    gw ~ # grep -i ssh /var/log/auth.log
    Feb 6 16:22:58 gw sshd[1039]: Received signal 15; terminating.
    Feb 6 16:22:58 gw sshd[11163]: Server listening on 0.0.0.0 port 22.
    Feb 6 20:14:18 gw sshd[12573]: Accepted password for root from 10.0.0.20 port 55050 ssh2
    Feb 6 20:14:18 gw sshd[12573]: pam_unix(sshd:session): session opened for user root by (uid=0)
    Feb 7 00:03:59 gw sshd[12550]: pam_unix(sshd:session): session closed for user root
    Feb 7 05:58:44 gw sshd[13738]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=mailer.arttour.ru user=root
    Feb 7 05:58:45 gw sshd[13738]: Failed password for root from 91.205.189.27 port 37561 ssh2
    Feb 7 05:58:46 gw sshd[13743]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=mailer.arttour.ru user=root
    Feb 7 05:58:48 gw sshd[13743]: Failed password for root from 91.205.189.27 port 38075 ssh2
    ........
    # далее сервер был запущен с ключом -n0
    ........
    Feb 7 11:31:15 gw sshd[14533]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=61.253.249.157 user=root
    Feb 7 11:31:16 gw sshd[14533]: Failed password for root from 61.253.249.157 port 54815 ssh2
    Feb 8 00:22:42 gw sshd[15794]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=220.194.53.114 user=bin
    Feb 8 00:22:44 gw sshd[15794]: Failed password for bin from 220.194.53.114 port 42724 ssh2
    Feb 8 13:35:06 gw sshd[17122]: Did not receive identification string from 95.132.37.105
    Feb 8 13:35:07 gw sshd[17126]: Invalid user admin from 95.132.37.105
    Feb 8 13:35:07 gw sshd[17126]: Failed none for invalid user admin from 95.132.37.105 port 3033 ssh2
    Feb 8 13:35:07 gw sshd[17126]: pam_unix(sshd:auth): check pass; user unknown
    Feb 8 13:35:07 gw sshd[17126]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=105-37-132-95.pool.ukrtel.net
    Feb 8 13:35:09 gw sshd[17126]: Failed password for invalid user admin from 95.132.37.105 port 3033 ssh2
    Feb 8 23:10:47 gw sshd[17896]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=189.206.39.51
    Feb 8 23:10:49 gw sshd[17896]: Failed password for invalid user tribunal from 189.206.39.51 port 51725 ssh2
    Feb 9 02:43:27 gw sshd[17991]: Did not receive identification string from 201.69.44.27
    Feb 9 22:51:26 gw sshd[18532]: Address 91.205.189.27 maps to mailer.arttour.ru, but this does not map back to the address - POSSIBLE BREAK-IN ATTEMPT!
    Feb 9 22:51:26 gw sshd[18532]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=91.205.189.27 user=nobody
    Feb 9 22:51:29 gw sshd[18532]: Failed password for nobody from 91.205.189.27 port 51484 ssh2
    .........
    gw ~ #
    Как видно, почти каждую секунду сервер пытаются взломать с "популярными" именами пользователей (root, nobody и др.)
    Работа OpenSSH в режиме отладки
    Если информации из системных журналов недостаточно, то можно запустить sshd в debug-режиме, указав в параметрах запуска демона (/etc/defauts/ssh) ключ -d. Так же, для диагностики отлично подойдет запуск клиента ssh с ключом -v (для бОльшей подробности можно задать -vv).
    Проверка работы sshd (запущен ли процесс, слушает ли порт):
    Проверить запущен ли sshd можно командой:
    gw ~ # ps aux | grep ssh
    root     14371  0.0  0.0   8396  2944 ?        Ss   Feb07   0:09 sshd: root@pts/0
    root     17514  0.0  0.0   5500   976 ?        Ss   Feb08   0:00 /usr/sbin/sshd -u0 -4
    root 19844 0.0 0.0 3328 788 pts/0 S+ 17:40 0:00 grep --colour=auto ssh
    Проверить, слушается ли необходимый порт можно командой:
    gw ~ # ss -nal
    State   Recv-Q   Send-Q   Local Address:Port     Peer Address:Port
    LISTEN  0        128      *:22                   *:*
    Выводы
    В данной статье я постарался изложить основные принципы работы OpenSSH сервера в Debian, рассказал, как установить сервер и как настроить. Описал основные методы аутентификации и основные схемы использования клиента SSH. Я планировал описать в статье о туннелировании трафика, но статья уже переросла все возможные размеры и тему туннелирования портов я пишу в следующей статье. Надеюсь, что материал был Вам полезен. До новых встреч!
    Что еще почитать:
    Основной источник документации об OpenSSH: http://www.openssh.org/manual.html
    Типы шифрования:  http://www.bog.pp.ru/work/security.html
    man ssh: http://www.opennet.ru/man.shtml?topic=ssh&category=1&russian=0
    man sshd: http://www.opennet.ru/man.shtml?topic=sshd&category=8&russian=0
    man ssh_config: http://www.opennet.ru/man.shtml?topic=ssh_config&category=5&russian=0
    man sshd_config: http://www.opennet.ru/man.shtml?topic=sshd_config&category=5&russian=0
    RFC на русском:
    RFC 4251 — Архитектура протокола SSH http://rfc2.ru/4251.rfc
    А так же куча RFC на буржуйском:



  • RFC 4250  (англ.) — The Secure Shell (SSH) Protocol Assigned Numbers
  • RFC 4251  (англ.) — The Secure Shell (SSH) Protocol Architecture
  • RFC 4252  (англ.) — The Secure Shell (SSH) Authentication Protocol
  • RFC 4253  (англ.) — The Secure Shell (SSH) Transport Layer Protocol
  • RFC 4254  (англ.) — The Secure Shell (SSH) Connection Protocol
  • RFC 4255  (англ.) — Using DNS to Securely Publish Secure Shell (SSH) Key Fingerprints
  • RFC 4256  (англ.) — Generic Message Exchange Authentication for the Secure Shell Protocol (SSH)
  • RFC 4335  (англ.) — The Secure Shell (SSH) Session Channel Break Extension
  • RFC 4344  (англ.) — The Secure Shell (SSH) Transport Layer Encryption Modes
  • RFC 4345  (англ.) — Improved Arcfour Modes for the Secure Shell (SSH) Transport Layer Protocol
  • RFC 4419  (англ.) — Diffie-Hellman Group Exchange for the Secure Shell (SSH) Transport Layer Protocol
  • RFC 4432  (англ.) — RSA Key Exchange for the Secure Shell (SSH) Transport Layer Protocol
  • RFC 4716  (англ.) — The Secure Shell (SSH) Public Key File Format

  • .

    Счетчик тИЦ и PR Яндекс.Метрика Msn bot last visit powered by MyPagerank.NetYahoo bot last visit powered by MyPagerank.Net ping fast  my blog, website, or RSS feed for Free