Настройка подключения к ubuntu через ssh

Я постоянно учусь чему бы то ни было и в следствии этого вспомнил, а вот есть протокол передачи файлов на основе SSH — это SFTP (SSH File Transfer Protocol). В его задачу входит передача файлов с сервера на сервер с использование зашифрованного соединения.

Введение в SSH

Как становится понятно из названия, SSH сервер основан на работе протокола SSH. Существуют несколько реализация данного сервера (dropbear, lsh-server, openssh-server, ssh и др.), в данной статье я буду рассматривать реализацию сервера OpenSSH на Debian SqueezeПротокол SSH изначально являлся проприетарным коммерческим и пережил 2 реализации. В 1995 г. была разработана версия протокола SSH-1, в 1996 г. разработали версию SSH-2 (используется по настоящее время), не совместимую с SSH-1.

Техническая информация о протоколе SSH

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). //

Читайте также:  Swap: как включить память подкачки в Linux

Архитектуру протокола SSH можно разделить на несколько уровней:

Транспортный уровень RFC 4253 — работает поверх протокола TCP, обеспечивает начальный обмен ключами, устанавливает шифрование, сжатие и проверку целостности.  Уровень аутентификации RFC 4252 — работает поверх транспортного уровня, обеспечивает аутентификацию клиента и сервера. Наиболее популярные методы аутентификации ssh:

  • Парольная — метод на основе простого ввода пароля.
  • Публичный ключ — метод на основе публичного RSA/DSA ключа
  • Интерактивный — метод, когда сервер посылает один или несколько запросов ввода информации клиенту, а клиент отображает их и отправляет обратно серверу ответы введенные пользователем. Используется при одноразовых паролях аутентификации.
  • GSSAPI — методы аутентификации, которые обеспечивают аутентификацию с использованием внешних механизмов, таких как Kerberos 5 или NTLM.

Протокол соединения RFC 4254 —  работает поверх протокола аутентификации, позволяет использовать установленный безопасный канал для передачи нескольких потоков информации в обоих направлениях. Используется для работы в шелле, туннелирования трафика или копирования файлов.

Настройка Брандмауэра (netfilter) для SSH и тырем порт

По умолчанию для SSH соединения, используется порт ТСP-порт 22. Забегая перед следует сказать, что многие рекомендует его поменять, но я так не думаю. Смена порта не поможет, «любой» сканер без труда отыщет ваш порт куда вы его не запрятали. Способ смены порта хорошо известен и Хакеры пишут соответствующие скрипты. Ниже будут приведены меры безопасности, прочитав их вы можете решить стоит ли менять порт или нет. Чтобы узнать какой порт слушает демон (sshd) на сервере, нужно выполнить команду:

$ sudo grep -w ‘Port’ /etc/ssh/sshd_config #Port 22

Применив директиву Port поменяв значение, вы укажете демону (sshd) порт который нужно слушать;

Port 8822

Теперь демон (sshd) будет слушать порт 8822, для подключения к серверу, нужно воспользоваться на клиентской машине командой:

$ ssh -p8822 [email protected]

Ключ ‘-p‘ указывает порт, вместо user пишем имя пользователя, 127.0.0.1 меняем на IP своего сервера.

C портами разобрались, теперь нужно настроить брандмауэр. Можно воспользоваться средствами TUI дистрибутива.

Внимание! Будьте внимательны и последовательны в ваших действиях ! Неправильные действия могут привести к потере удалённого доступа.

Для Red-Hat based:

$ sudo yum install iptables system-config-securitylevel-tui $ sudo system-config-securitylevel-tui

Нужно открыть порты (SSH) ТСP-22, UDP-22 или соответственно открыть порт который указали в директиве Port

Для SuSE:

$ sudo yast

Заходим в /Безопасность и пользователи/ Брандмауэр / Разрешённые службы — добавляем «Сервер Secure Shell», если вы указали порт директивой Port то / Брандмауэр / Разрешенные службы /Дополнительно и добавляем порт TCP и UDP .

Для «ручной настройки» следует внимательно ознакомиться с правилами iptables и настройкой брандмауэра вашего дистрибутива.

Приведу пример открытия портов простыми правилами:

iptables -A INPUT -p tcp —dport 22 -j ACCEPT iptables -A OUTPUT -p udp —sport 22 -j ACCEPT

Внимание ! Следует понимать, что к примеру SuSEfirewall2 генерирует правила для iptables из конфигурационного файла /etc/sysconfig/SuSEfirewall2, в каждом дистрибутиве есть свои особенности управления брандмауэром.

Настройка параметров подключения к SSH

Необходимо понимать, что использование такого блага как ssh-соединение влечет за собой и риск подвергнуться хакерской атаке. Злоумышленники могут попытаться проникнуть на ваш удаленный сервер, используя логин и пароль. Чтобы свести вероятность успешной атаки к минимуму, воспользуемся доступными нам средствами, а именно — изменением настроек подключения.

Читайте также:  КАК СОХРАНИТЬ ВЫДЕЛЕННЫЙ ТЕКСТ ИЗ ИНТЕРНЕТА

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

На всякий случай создаем резервную копию конфигурационного файла с настройками:

cp /etc/ssh/sshd_config{,.bak}

Приставка {,.bak} позволяет скопировать файл с указанным именем и расширением bak, которое присваивается резервным копиям.

Теперь через текстовый редактор, например, vim, emacs, nano, открываем файл /etc/ssh/sshd_config и вносим в него основные правки. В целях повышения безопасности SSH соединения нас интересуют следующие параметры:

  1. PermitRootLogin
  2. AllowUsers, AllowGroups
  3. DenyUsers, DenyGroups
  4. Port
  5. ListenAddress
  6. Login GraceTime
  7. ClientAliveInterval
  8. HostbasedAuthentication.

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

PermitRootLogin Этот параметр устанавливает разрешение на вход в систему как root пользователь. Для повышения безопасности соединения рекомендуется отключить такую возможность, т.е. изменить установленное в файле значение “Yes” на “No”:

PermitRootLogin no

При таких условиях выполнять команды с правами суперпользователя после входа на сервер можно будет с помощью функций su либо sudo.

AllowUsers, AllowGroups Когда в системе создано много пользователей, то, согласно первоначальных настроек, каждый из них имеет возможность удаленного доступа по SSH. Чтобы разрешить доступ только для определенного круга лиц (и, соответственно, запретить его для всех остальных), существуют параметры AllowUsers и AllowGroups. Запись в конфигурационном файле имеет, соответственно, вид:

AllowUsers user1 user2 user3 AllowGroups group1 group2 group3

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

DenyUsers, DenyGroups Когда пользователей в системе много и нужно предоставить удаленный доступ большинству из них, при этом запретив его отдельным лицам и группам, в sshd_config файле вносят правки в параметры DenyUsers, DenyGroups. Напротив этих параметров, аналогично примеру с AllowUsers, AllowGroups, перечисляем имена пользователей и групп, которым будет отказано в доступе на сервер по SSH.

DenyUsers user1 user2 DenyGroups group1 group2

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

Port Чтобы усложнить задачу хакерам, стоит позаботиться о хорошей маскировки своего ssh-порта.

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

Port 22540

ListenAddress Кроме того, что ssh-соединения настроено на определенном порте, подключение осуществляется на различных сетевых интерфейсах. Иными словами сервер слушает множество IP-адресов. Есть возможность указать в конфигурационном файле конкретные адреса интерфейсов для входа на сервер с помощью параметра ListenAddress. Например:

ListenAddress

Login GraceTime По умолчанию, при подключении к серверу по ssh у пользователя есть 2 минуты для ввода логина и пароля. Такого промежутка более чем достаточно, причем не только для авторизованного пользователя, но и для хакера. Поэтому время ожидания ввода этих данных стоит ограничить до 30-60 секунд, в зависимости от ваших предпочтений.

Login GraceTime 30

ClientAliveInterval Этот параметр призван определить время бездействия пользователя, по истечении которого соединение автоматически разрывается. Период ожидания необходимо указать в секундах, например:

Читайте также:  Apple выпустила iOS 14.4 beta 2. Что нового

ClientAliveInterval 300

HostbasedAuthentication Также стоит отключить авторизацию пользователя на основе хоста с помощью директивы:

HostbasedAuthentication no

Лучше воспользоваться аутентификацией на основе ключей.

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

Установка Samba в Ubuntu

На этом этапе компьютеры с Windows и Ubuntu должны быть членами одной и той же рабочей группы, и обе системы имеют записи в своем локальном хост-файле, чтобы ссылаться на другую по имени.

Войдите в систему на компьютере Ubuntu, чтобы установить Samba. Для её установки выполните следующие команды:

sudo apt update sudo apt install samba

После установки Samba проверьте, запущены ли службы Samba. Для этого выполните следующие команды:

sudo systemctl status smbd

Вывод должен показать похожие строки, как это видно ниже:

Установка OpenSSH в Ubuntu

Установить SSH на Ubuntu будет очень просто, программа считается стандартной и используется почти везде. Хотя по умолчанию в дистрибутиве её нет, но зато она есть в официальных репозиториях.

Поэтому для установки откройте терминал с помощью сочетания клавиш Ctrl+Alt+T и выполните команду:

Установка OpenSSH в Ubuntu

sudo apt install openssh-server

Будет загружено несколько пакетов, а когда установка ssh сервера Ubuntu завершится, программа будет готова к работе. Если вы хотите чтобы служба запускалась автоматически нужно добавить его в автозагрузку. Поэтому чтобы включить SSH в Ubuntu выполните:

sudo systemctl enable sshd

Установка OpenSSH в Ubuntu

Если затем вы захотите удалить службу из автозагрузки, используйте команду disable:

sudo systemctl disable sshd

Что касается клиента ssh, то он уже установлен в системе по умолчанию. Сейчас вы можете попробовать подключиться к локальному ssh серверу просто набрав:

Установка OpenSSH в Ubuntu

В одной из предыдущих статей мы рассматривали что означает адрес 0.0.0.0, сейчас вы можете убедиться что в пределах этой машины он значит локальный адрес:

Точно таким способом вы можете получить ssh доступ ubuntu к любому другому компьютеру из сети. Для этого достаточно указать вместо localhost его ip адрес и имя пользователя в таком формате:

$ ssh имя_пользователя @ ip_адрес

Установка OpenSSH в Ubuntu

Общие требования к учетным данным

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

Так как подбор имен и паролей (брутфорс) происходит по словарю, логично было бы использовать такое имя пользователя, которое с наименьшей вероятностью окажется в словаре. Например, xd11rn и подобные. Не стоит использовать слишком короткие имена пользователей. Главное, потом не забыть имя пользователя.

К паролям есть ряд общих требований:

  • не использовать пароли короче 10 символов;
  • использовать буквы верхнего и нижнего регистра, а также цифры;
  • использовать специальные символы, но только там, где это возможно.
Общие требования к учетным данным

Поделиться Оценить

Средняя оценка: 5.0 Оценили: 1191028 Санкт-Петербург Литейный пр., д. 26, Лит. А +7 (812) 443-85-60

  • 700 300 ООО «ИТГЛОБАЛКОМ ЛАБС»191028 Санкт-Петербург Литейный пр., д. 26, Лит. А +7 (812) 443-85-60
  • 700 300 ООО «ИТГЛОБАЛКОМ ЛАБС»
  • 700 300