Учимся использовать SSH туннелирование для безопасного серфинга
Существует три различных типа туннелирования, и все они используются для решения разных задач. Каждая задача предполагает использование SSH-сервера для перенаправления трафика из одного сетевого порта в другой. Трафик передается по зашифрованному SSH-соединению, поэтому его нельзя отследить или изменить в процессе передачи:
Туннелирование можно реализовать с помощью ssh-команды в Linux, Mac OS и операционных системах семейства UNIX. Для пользователей Windows, где нет встроенной ssh-команды, мы предлагаем бесплатный инструмент PuTTY. Он умеет подключаться к SSH-серверам. Он также поддерживает SSH-туннелирование.
Локальное перенаправление портов (port forwarding): получаем доступ к удалённым ресурсам на локальной системе
«Локальное перенаправление портов» позволяет осуществлять доступ к ресурсам, находящимся внутри локальной сети. Предположим, что нужно попасть на офисный сервер БД, сидя дома.
В целях безопасности этот сервер настроен так, чтобы принимать подключения только с ПК, находящихся в локальной сети офиса. Но если у вас есть доступ к SSH-серверу, находящемуся в офисе, и этот SSH-сервер разрешает подключения из-за пределов офисной сети, то к нему можно подключиться из дома.
Затем осуществить доступ к БД. Проще защитить от атак один SSH-сервер, чем защищать каждый ресурс локальной сети по отдельности.
Чтобы сделать это, вы устанавливаете SSH-соединение с SSH-сервером и говорите клиенту передать трафик с указанного порта на локальном ПК. Например, с порта 1234 на адрес сервера базы данных и его порт внутри офисной сети. Когда вы пытаетесь получить доступ к БД через порт 1234 на вашем ПК («localhost») трафик автоматически «туннелируется» по SSH-соединению и отправляется на сервер БД.
SSH-сервер выступает посредником, пересылая трафик туда-сюда. При этом можно использовать любую командную строку или графический инструмент для осуществления доступа к базе данных, как вы обычно делаете это на локальном ПК.
Чтобы использовать локальное перенаправление, подключитесь к SSH-серверу с использованием вспомогательного аргумента -L. Синтаксис для туннелирования трафика будет следующим:
ssh -L local_port:remote_address:remote_port [email protected]
Предположим, что офисный сервер находится по адресу 192.168.1.111. У вас есть доступ к SSH-серверу через адрес ssh.youroffice.com, и имя вашего аккаунта на SSH-сервере — bob. В таком случае необходимая команда будет выглядеть следующим образом:
ssh -L 8888:192.168.1.111:1234 [email protected]
Запустив эту команду, вы попадете на офисный сервер баз данных через порт 8888 на localhost. Если у СУБД есть веб-интерфейс, можно вписать в адресную строку браузера http://localhost:8888.
Если у вас инструмент командной строки, которому необходим сетевой адрес базы данных, то направьте его на localhost:8888. Весь трафик, отправленный на порт 8888 на ПК, будет перенаправлен на 192.168.1.
111:1234 внутри офисной сети:
Это слегка сбивает с толку, если надо подключиться к серверному приложению, запущенному в той же системе, где и сам SSH-сервер. К примеру, есть SSH-сервер, работающий на порте 22 на офисном ПК.
Но у вас также есть сервер баз данных, работающий на порте 1234 в той же системе по тому же адресу.
Вам нужно подключиться к БД из дома, но система принимает только SSH-подключение через 22 порт, и сетевой экран не пропускает любые внешние подключения. В таком случае можно запустить следующую команду:
ssh -L 8888:localhost:1234 [email protected]
При попытке подключиться к БД через 8888 порт на вашем ПК, трафик будет передаваться с помощью SSH-подключения. Когда он достигнет системы, в которой работает SSH, SSH-сервер отправит его на порт 1234 на «localhost», принадлежащий тому же ПК, на котором запущен SSH-сервер. То есть, «localhost» в приведённой выше команде означает «localhost» с перспективы удалённого сервера:
Чтобы сделать это в PuTTY на Windows, выберите опцию Connection > SSH > Tunnels. Далее опцию «Local». В поле «Source Port» укажите локальный порт. В поле «Destination» введите целевой адрес и порт в формате удалённый_адрес:удалённый_порт.
Например, если нужно настроить SSH-тоннель, как это сделано выше, то введите 8888 в качестве порта-источника и localhost:1234 в качестве целевого адреса. После этого нажмите «Add» и затем «Open», чтобы открыть SSH-подключение. До подключения SSH туннелирования нужно ввести адрес и порт самого SSH-сервера в разделе «Session»:
Дистанционное перенаправление портов: открываем доступ к локальным ресурсам на удалённой системе
«Дистанционное перенаправление портов» — ситуация, противоположная локальному перенаправлению, и используется не так часто. Она позволяет открывать доступ к ресурсам на локальном ПК через SSH-сервер. Предположим, что на локальном ПК настроен веб-сервер. Но ваш ПК защищён сетевым экраном, который не пропускает входящий трафик на сервер.
Если есть доступ к удалённому SSH-серверу, можно подключиться к этому SSH-серверу и использовать дистанционное перенаправление портов.
Ваш SSH-клиент укажет серверу перенаправлять трафик с определённого порта – скажем, 1234 – на SSH-сервере на указанный адрес и порт на вашем ПК или внутри локальной сети. Когда кто-то подключается к порту 1234 на SSH-сервере, этот трафик автоматически «туннелируется» по SSH-соединению.
Любой, кто подключается к SSH-серверу, сможет получить доступ к серверу, запущенному на вашем ПК. Это достаточно эффективный способ обхода фаерволов.
Чтобы воспользоваться дистанционным туннелированием IP, используйте ssh-команду с аргументом —R. Синтаксис здесь будет практически таким же, как и в случае с локальным перенаправлением:
ssh -R remote_port:local_address:local_port [email protected]
Предположим, что нужно создать серверное приложение, прослушивающее порт 1234 на вашем ПК. Оно доступно через порт 8888 на удалённом SSH-сервере. Адрес SSH-сервера ssh.youroffice.com, а ваше имя пользователя на SSH-сервере bob. Значит, команда будет следующей:
ssh -R 8888:localhost:1234 [email protected]
Затем кто-то может подключиться к SSH-серверу через порт 8888, и это подключение будет туннелировано на серверное приложение, запущенное на порте 1234 ПК, с которого вы подключались:
Чтобы сделать это в PuTTY для Windows, выберите опцию Connection > SSH > Tunnels. Далее – опцию «Remote». В поле «Source Port» укажите удалённый порт. В поле «Destination» введите целевой адрес и порт в формате локальный_адрес:локальный_порт.
Например, если нужно настроить SSH-тоннель, как это сделано выше, то укажите 8888 в качестве порта-источника и localhost:1234 в качестве целевого адреса. После этого нажмите «Add» и затем «Open», чтобы открыть SSH-подключение. До подключения нужно будет ввести адрес и порт самого SSH-сервера в разделе «Session».
После этого пользователи смогут подключаться к порту 8888 на SSH-сервере и их трафик будет передаваться на порт 1234 на вашей локальной системе:
По умолчанию, удалённый SSH-сервер будет слушать только подключения с того же хоста. Другими словами, доступ будет только у людей из той же системы, на которой запущен SSH-сервер. При туннелировании трафика так делается в целях безопасности.
Нужно включить опцию «GatewayPorts» в sshd_config на удалённом SSH-сервере, если хотите изменить эти настройки.
Динамическое перенаправление портов: используем SSH-сервер в качестве прокси
Также существует «динамическое перенаправление портов», которое работает по тому же принципу что прокси или VPN-сервер. SSH-клиент создаёт SOCKS-прокси, который можно настраивать под собственные приложения.
Весь трафик, отправляемый через прокси, будет отправляться через SSH-сервер.
Принцип здесь схож с локальным перенаправлением – берётся локальный трафик, отправленный на определённый порт на вашем ПК, и перенаправляется через SSH-соединение на удалённый адрес.
Предположим, что вы используете общедоступную Wi-Fi сеть. Но хочется делать это безопасно. Если у вас есть доступ к SSH-серверу из дома, то можно подключиться к нему и использовать динамическое перенаправление. SSH-клиент создаст SOCKS-прокси на вашем ПК.
Весь трафик, отправленный на этот прокси, будет отправляться через подключение к SSH-серверу. Никто из тех, кто использует общедоступную Wi-Fi сеть, не сможет отслеживать ваши перемещения в сети или закрывать доступ к сайтам.
С перспективы сайтов, которые посещаете, будет казаться, что вы заходите на них с домашнего ПК.
Или же может понадобиться подключиться к медиа-серверу, находящемуся в вашей домашней сети. В целях безопасности, к интернету подключен только ваш SSH-сервер.
При этом вы не разрешаете подключаться к медиа-серверу через интернет.
В таком случае можно включить динамическое перенаправление портов, настроить SOCKS-прокси в браузере и затем подключаться к серверам, работающим в домашней сети, через браузер, как будто вы сидите дома.
Например, если медиа-сервер находится по адресу 192.168.1.123 в вашей домашней сети, то можно добавить адрес 192.168.1.123 в любое приложение при помощи SOCKS-прокси и получить доступ к медиа-серверу, как будто вы находитесь внутри домашней сети.
Чтобы воспользоваться динамическим перенаправлением, запустите ssh-команду с аргументом —D:
ssh -D local_port [email protected]
Предположим, что у вас есть доступ к SSH-серверу по адресу ssh.yourhome.com, а ваш логин на SSH-сервере – bob. Нужно использовать динамическое перенаправление для того, чтобы открыть SOCKS-прокси по порту 8888 на текущем ПК. Тогда команда для SSH туннелирования будет выглядеть следующим образом:
ssh -D 8888 [email protected]
После этого можно настроить браузер или другое приложение на использование локального IP-адреса (127.0.0.1) и порта 8888. Весь трафик этого приложения будет перенаправляться через туннель:
Чтобы сделать это в PuTTY для Windows, выберите опцию Connection > SSH > Tunnels. Далее – опцию «Dynamic». В поле «Source Port» укажите локальный порт.
Например, если вам нужно настроить SOCKS-прокси на порт 8888, то введите 8888 в качестве порта-источника. После этого нажмите «Add» и затем «Open», чтобы открыть SSH-подключение.
После этого можно настроить приложение на подключение через SOCKS-прокси на вашем локальном ПК (то есть, по IP-адресу 127.0.0.1, который ведёт на ваш локальный ПК) и указать корректный порт для работы:
К примеру, можно настроить браузер Firefox на использование SOCKS-прокси. Это удобно, так как у Firefox могут быть отдельные настройки прокси, и поэтому не обязательно использовать базовые параметры для всей системы. Firefox будет отправлять трафик через SSH туннелирование, а другие приложения будут использовать интернет-подключение в обычном режиме.
Туннель будет оставаться активным и открытым до тех пор, пока открыта сессия SSH-соединения. Когда вы завершите SSH-сессию и отключаетесь от сервера, туннель тоже закроется. Чтобы снова открыть туннель, переподключитесь при помощи соответствующей команды или нужной функции в PuTTY.
Перевод статьи “How to Use SSH Tunneling to Access Restricted Servers and Browse Securely” был подготовлен дружной командой проекта Сайтостроение от А до Я.
Источник: http://www.internet-technologies.ru/articles/uchimsya-ispolzovat-ssh-tunnelirovanie-dlya-bezopasnogo-serfinga.html
Семь шагов по улучшению безопасности ssh
Для повышения безопасности сервера при использовании ssh практикуют различные способы, предотвращающие деструктивные действия либо несанкционированный доступ к серверу.Практически все эти способы подразумевают установку дополнительных приложений. Как-то:
denyhosts — небольшой демон, написанный на python, и интернет-сервис, позволяющий обмениваться заблокированными ip-адресами. Суть работы данного демона заключается в периодическом сканировании файла /var/log/auth.
log (либо подобного. это все настраивается) и поиске ip-адресов, с которых идет подбор пароля. Т.е если с определенного адреса произошло некоторое количество неудачных попыток авторизации, этот ip-адрес блокируется с помощью в /etc/hosts.
allow
Более параноидальный метод — Port Knocking. Суть метода в том, что по умолчанию нужный порт является заблокирован. Для того, чтобы его открыть, требуется послать определенную последовательность пакетов на заранее условленные порты для того, чтобы нужный порт открылся.
Возможно, придумали и более изощренные методы, но я с ними не знаком. Поэтому ниже пойдет речь о том, что можно сделать с помощью стандартного конфигурационного файла OpenSSH для повышения безопасности вашего сервера.
Настройки OpenSSH располагаются в файле /etc/ssh/sshd_config. В этой статье будет описано 7 параметров sshd_config, которые следует изменить.
В самом конфигурационом файле все строки, которые начинаются с символа «#» являются комментариями и не учитываются. И используются значения по умолчанию.
Обратите внимание на то, что закоментированные параметры указывают как раз это значение.
К примеру, ssh_config содержит следующую строку.
Она означает, что у параметра PubkeyAuthentication (авторизация по ключу) стоит значение «yes», и оно является значением по умолчанию.
Если потребуется изменить, то можно просто удалить «решетку», тем самым раскомментировав параметр и указать свое значение (к примеру с «yes» изменить на «no»), так как это представлено ниже:
Все выше указанное было просто примером.
Изменять параметр PubkeyAuthentication не требуется по причине того, что использование ключа для авторизации увеличивает безопасность и сводит на нет возможность подобрать пароль к пользователю, который имеет доступ к ssh.И вообще, в ходе чтения этой статьи вам потребуется отредактировать всего 7 параметров, которые будут описаны. Этого вполне достаточно. И так, приступим.
1. Отключение возможность авторизации под суперпользователем (PermitRootLogin)
По умолчанию зайти на удаленный сервер под пользователем root никто не запрещает. Но это не совсем безопасно. В место этого более правильно будет авторизовываться под пользовательской учетной записью и повышать свои привилегии с помощью команды ‘su -‘, либо использовать ‘sudo’.
Если в вашей организации несколько системных администраторов и все они подключаются к серверу под суперпользователем, то не всегда можно узнать кто из администраторов находится на сервере.
Поэтому после отключения возможности авторизации напрямую под пользователем root, системные администраторы сначала будут заходить под своей учетной записью и только после этого получать привилегии суперпользователя; это облегчить аудит сервера и действий, которые производят сисадмины.
Для отключения вышеописанной функции следует отключить параметр PermitRootLogin, установив значение “no”.
2. Предоставление доступа только указанным пользователям или группам (AllowUsers, AllowGroups)По умолчанию авторизоваться может любой пользователь сервера. Лучше ограничить круг пользователей, которым разрешен доступ к ssh.Это может быть полезно, когда вы создаете некоторое количество пользователей системе, но разрешить доступ по ssh хотите только некоторым.
Так же это можно использоваться совместно с NIS или openLDAP (или другие внешние приложения), которым требуется авторизация. Каждый из пользователей вашей компании может иметь учетную запись на серверах NIS, openLDAP и т.п, но на по ssh на некоторые сервера требуется пускать только определенных.
Для этого в конфигурационный файл sshd_config следует добавить определенных пользователей, существующих на сервере. В примере ниже это пользователи vasya, petya и kolya, которым разрешен вход на сервер. Имя пользователей разделены пробелами.
При добавлении всех пользователей, которые присутствуют в какой-либо опроеделенной групппе следует указать так, как это представлено на примере ниже. Группы пользователей, которыи разрешен вход на сервер разделены так же пробелом.
3. Блокировка доступа определенным пользователям или группам (DenyUsers, DenyGroups)В противовес параметра, разрешающего доступ определенным пользователям или группам, вы так же можете указать пользователей или группы, которым запрещен вход на сервер.
Для этого следует добавить в конфигурационный файл sshd_config параметр DenyUsers, в котором через пробел указать тех пользователей, которым запрещен доступ на сервер. На примере ниже это системные cvs и apache, а так же вполне реальный borya.
Существует так же параметр, с помощью которого можно запретить доступ не отдельным пользователям, а целым группам, в которые входят пользователи. Это параметр DenyGroups и группы указываются через пробел..
Обратите внимание на то, что можно использовать комбинации запрещающих и разрешающих параметров: DenyUsers, AllowUsers, DenyGroups, и AllowGroups.
4. Изменение порта SSHD (Port)По умолчанию, ssh работает на 22 порту. Основная масса атакующих не задумываясь пытается подключиться к этому порту и, используя словарный подбор имени пользователя и пароля, получить доступ к серверу.
Если вы раскомментируете параметр Port и измените на что-либо другое, то это снизит интенсивность атак. К примеру, можно указать порт 222.
Если журнальных файлах сервера (обычно, это /var/log/secure), вы увидете большое количество попыток авторизации, где в качестве имени пользователей указаны те, кого нет на сервере, и с тех IP-адресов, которые вам неизвестны, то будьте уверены это тот самый брут-форс о котором говорилось выше.
Так же обратите внимание на то, при использовании данного способа, всем сотрудникам придется запоминать не только IP-адрес сервера, но и номер порта к которому следует подключаться.
5. Изменение времени ожидания авторизации (LoginGraceTime)При попытке авторизоваться по ssh на сервер у вас есть 2 минуты, чтобы ввести логин и пароль. Если вы этого не сделаете, то соединение с сервером будет разорвано.2 минуты ожидания авторизационных данных это довольно много. Следует ограничить до 1 минуты или даже до 30 секунд.
Для этого следует изменить параметр LoginGraceTime путем редактирования файла sshd_config, и указать там требуемое время. В примере ниже это 1 минута.
6. Ограничение авторизации по интерфейсу (ListenAddress)Если на сервере есть несколько сетевых интерфейсов, которые настроены на использования разных IP-адресов, то вы можете ограничить доступ и по этому параметру.
К примеру, на сервере следующие 4 сетевых интерфейса:
eth0 – 192.168.0.1 eth1 – 192.168.0.2 eth2 – 192.168.0.3
eth3 – 192.168.0.4
По умолчанию, ssh-сервер находится в состоянии ожидания подключения на всех IP-адресах. Если хотите, чтобы пользователи могли авторизовываться только на интерфейсах 2 и 3, то следует сделать так:
7. Рассоединение при отсутствии активности в шелле (ClientAliveInterval)После того, как вы успешно авторизовались на сервер, вы можете захотеть сделать так, чтобы можно было разрывать соединение автоматически после того, как прошло некоторое время, в течение которого вы не производили никаких действий в консоли. Это обычно называется временем бездействия.
В Bash, можно использовать переменную окружения TMOUT.
В OpenSSH, это достигается путем комбинации параметров ClientAliveCountMax и ClientAliveInterval в конфигурационном файле sshd_config.
- ClientAliveCountMax – Параметр указывает на полное количество сообщений, отсылаемого ssh-сервером для распознавания активности ssh-клиента. По умолчанию это 3.
- ClientAliveInterval – Параметр указывает на время ожидания в секундах. После указанного времени ssh-сервер отошлет сообщение-запрос клиенту. По умолчанию значение этого параметра — 0. Т.е сервер не отсылает сообщение для проверки.
Для того, чтобы ваш ssh-клиент автоматически отключался после 10 минут (600 секунд), следует внести изменения в конфигурационный файл sshd_config следующим образом:
Источник: http://www.thegeekstuff.com/2011/05/openssh-options/
Источник: https://sabini.ch/blog/sem-shagov-po-uluchsheniyu-bezopasnosti-ssh.html
Как подключиться к серверу по SSH?
С помощью защищенного протокола SSH администраторы подключаются к своим серверам для безопасной работы. Рассмотрим особенности этого протокола подробнее:
Что такое SSH-протокол
SSH-протокол (от англ. Secure Shell) — криптографический сетевой протокол, предназначенный для удаленного доступа к операционной системе и осуществления безопасного удаленного управления в рамках незащищенной сети (например, через интернет).
SSH обеспечивает защищенный канал связи между клиентом и сервером, через который можно передавать данные (почтовые, видео, файлы), работать в командной строке, удаленно запускать программы, в том числе графические. SSH-сервер должен быть установлен на удаленной операционной системе. SSH-клиент должен быть запущен на машине, с которой будет осуществляться удаленное подключение.
Основные функции, доступные при использовании SSH-протокола:
- Передача любых данных через защищенное SSH-соединение, включая сжатие данных для последующего шифрования.
- X11 Forwarding — механизм, позволяющий запускать программы UNIX/Linux-сервера в виде графической оболочки, как в Windows (использовать X Window System).
- Переадресация портов — передача шифрованного трафика между портами разных машин.
Безопасность SSH-соединения обеспечивается:
- шифрованием данных одним из существующих алгоритмов
- аутентификацией сервера и клиента одним из нескольких доступных методов
- наличием дополнительных функций протокола, направленных на предупреждение различных хакерских атак
Аутентификация сервера дает защиту от:
- взлома путем подмены IP-адресов (IP-spoofing), когда один удаленный хост посылает пакеты от имени другого удаленного хоста
- подмены DNS-записей (DNS-spoofing), когда подменяется запись на DNS-сервере, в результате чего соединение устанавливается с хостом, который указан в подмененной записи, вместо необходимого
- перехвата открытых паролей и других данных, передаваемых в открытом виде через установленное соединение
На сегодняшний день существуют две версии протокола SSH (SSH-1 и SSH-2), причем вторая версия усовершенствована и расширена по сравнению с первой.
Например, вторая версия устойчива к атакам вида MITM («человек посередине», атака посредника). Также существуют две редакции данного протокола: открытая версия (бесплатная) и коммерческая (платная).
Бесплатная версия — OpenSSH — встроена во все UNIX-подобные операционные системы в виде стандартных утилит SSH-клиента и SSH-сервера.
Коммерческая реализация SSH-протокола — SSH Communications Security — разработана одноименной организацией. Имеет небольшие отличия от бесплатной версии, такие как доступность коммерческой технической поддержки, наличие инструментов веб-управления и др. Основной набор команд и возможностей практически одинаковый у обоих продуктов.
Для ОС Windows выпущены различные SSH-клиенты и оболочки, самые распространенные из них — это бесплатные PuTTY и WinSCP. Для других операционных систем также существуют свои SSH-клиенты.
Передача данных по SSH-протоколу через небезопасную сеть
Что такое SFTP-протокол
SFTP-протокол (от англ. SSH File Transfer Protocol) – сетевой протокол прикладного уровня, предназначенный для передачи файлов и других действий с ними через имеющееся надежное соединение.
Протокол был разработан как расширение SSH-2, предназначенное для операций с файлами по защищенному каналу, однако может работать и с другими протоколами, обеспечивающими безопасное соединение сервера с клиентом.
Иными словами, для надежной работы через SFTP-протокол необходимо иметь установленное защищенное соединение (например, SSH), которое проводит аутентификацию клиента и сервера и устанавливает факт их надежности, поскольку сам SFTP-протокол не проводит аутентификацию и не обеспечивает безопасность.
SFTP имеет ряд преимуществ перед своими предшественниками — FTP и SCP — таких, как прерывание передачи файла, удаление, возобновление передачи, связь переданных файлов с основными атрибутами, например, меткой даты/времени, а также более высокая платформонезависимость.
SFTP-протокол реализуется через SFTP-сервер и SFTP-клиент, которые являются подсистемами OpenSSH.
Для чего используются SSH и SFTP протоколы
Чаще всего протоколы SSH и SFTP используются для удаленной работы с операционной системой или переноса большого количества файлов.
Например, клиент берет в аренду сервер или какую-то часть серверного пространства. Возникает необходимость переносить туда уже имеющиеся данные клиента, например, сайт или почтовые файлы.
Провайдер должен обеспечить надежность и быстроту обмена данными с его сервером, особенно если речь идет о больших объемах информации и ее высокой конфиденциальности. В этом случае на удаленной машине (в данном случае — виртуальном сервере) устанавливается SSH-сервер (со встроенным SFTP-протоколом), а на клиентском компьютере — SSH-клиент.
Создается SSH-туннель, и обмен данными между клиентом и удаленным сервером осуществляется через надежное соединение со всеми преимуществами протокола, описанными выше.
Также SSH может использоваться для удаленной работы по защищенному соединению с различными сервисами провайдера, такими как программное обеспечение, операционные системы и т.д.
Как работает SSH
По протоколу SSH работает набор программ, служащих для выполнения различных действий на удаленной операционной системе.
Например, программа sshd обеспечивает серверную функциональность SSH, она должна быть запущена на SSH-сервере.
Программа ssh запускается на SSH-клиенте и позволяет устанавливать соединение с удаленным хостом, регистрироваться на нем, работать с удаленной машиной через SSH-соединение.
Для запуска тех или иных программ SSH-протокола существуют специальные команды с набором различных опций. Эти команды могут отличаться в зависимости от используемой клиентской операционной системы и оболочки SSH-клиента. Команды запускаются либо из командной строки, если речь идет о UNIX-подобных системах, либо посредством графического интерфейса в соответствующих SSH-оболочках.
Как подключиться по SSH
Если на вашем компьютере установлена ОС Windows, а на удаленной машине UNIX-подобная система (например, Linux), то для установки SSH-соединения можно использовать PuTTY. Это бесплатная программа под Windows состоит из одного запускаемого файла и не требует инсталляции.
Чтобы установить соединение при помощи PuTTY, необходимо проделать следующие действия.
Запустить PuTTY (putty.exe).
По умолчанию никаких дополнительных настроек проводить не нужно, можно убедиться, что указан 22-й порт и тип соединения Connection type — SSH. В поле Host Name (or IP address) нужно ввести имя удаленного компьютера или его IP-адрес и нажать кнопку Open.
Может появиться предупреждение системы безопасности PuTTY, однако если есть уверенность в том, что хост достоверен, то нужно нажать Да и продолжить соединение.
В появившейся командной строке нужно ввести имя пользователя, под которым будет выполняться вход на удаленный компьютер.
В следующей строке нужно ввести пароль для данного пользователя. При вводе пароля никакие символы в командной строке не отображаются, поэтому необходимо просто набрать пароль и нажать клавишу ввода (Enter). Если введены неправильные имя пользователя и пароль, то выведется ошибка «Access denied», в случае успешного подключения предоставляется командная строка удаленного компьютера.
Источник: https://FirstVDS.ru/technology/ssh-connection
Как защитить SSH подключение на Linux сервере
SSH – это протокол используемый для обеспечения безопасности и шифрования передачи данных в сети. Он широко используется в кругу Linux администраторов для управления удаленным серверомю.
Сервер подключение к сети Интернет очень часто подвергаются атакам на службу SSH с целью получить доступ к серверу. Самая расптространенная это подбор пароля пользователя с правами адмиристратора.
В этой инструкции мы рассмотрим базоые рекомендации для обеспечения безопасности SSH подключения.
Установите сложный пароль
Ваш сервер может подврегнутся атаки со стороны злоумышленников пытающихся подобрать пароль к серверу по SSH, чтобы снизить риск взлома – рекомендуем устанавливать пароли к учетным записям сервера соответствующие следующим параметрам:
- Как минимум 8 символов
- Используйте верхний и нижний регистр символов (AaBb)
- Используйте буквы – цифры и знаки (!BasDf345$@)
Сильный пароль не только защитит от взлома по SSH протоколу, но и в целом улучшит защиту сервера.
Используйсте SSH ключи
Дополнительной защитой Вашего сервера будет использование ключа для подключения к серверу по SSH, генерировать ключ нужно на компьютере/сервере с которого будете подключаться:
Как создать SSH ключ на Windows ОС: Инструкция – как создать SSH ключ на Windows OS
Чтобы создать ключ в Linux наберите команду:
ssh-keygen -t rsa
Чтобы установить этот ключ на сервер к которому Вы будете подключаться наберите команду:
ssh-copy-id -p 22 [email protected]
- -p 22 – порт сервера по которому работает SSH протокол (может быть изменён, подробней информация ниже)
- admin – Логин от Вашего сервера
- 192.168.1.1 – IP адрес Вашего сервера
Если всё сделали правильно то теперь Вы можете подключаться к серверу по ключу, при этом Вам не придется каждый раз вводить пароль.
Используйте нестандартный порт
Стандартно SSH служба запущенная на сервере слушает 22 Порт для подключения/передачи данных, этим могут воспользоваться злоумышленники рассчитывая на то что большинство пользователей не меняют стандартный порт для подключения к серверу. Поэтому мы изменим порт, тем самым – ещё раз уменьшив риск взлома нашего сервера.
Для этого откроем конфигурационный файл SSH на сервере:
sudo nano /etc/ssh/sshd_config
Найдем в нём закомментированную строку такого вида:
# Port 22
Удалим символ # – чтобы убрать опцию комментария и изменим 22 на любые цифры начиная с 11060 и по нарастанию, для примера будем использовать 11060, теперь строка должна выглядеть так:
Port 11060
Сохраните конфигурацию “Ctrl+O” и выходите из редактора “Ctrl+X“.
Нужно перезагрузить SSH службу – чтобы принялись новые настройки, выполним команду:
sudo service sshd restart
Таким образом мы поменяли порт для подключения, с этих пор – чтобы подключиться к серверу нужно указывать нестандартный порт опцией -p 11060, например:
ssh -p 11060 [email protected]
Готово.
Оставить доступ только части пользователей
SSH подключение можно лимитировать для отдельных учетных записей, например если на сервере имеется три учетных записи: admin , sergey , alex – у Вас есть возможность разрешить удаленное подключение только для некоторых из них. Для этого откройте конфигурационный файл SSH:
sudo nano /etc/ssh/ssh_config
В этом файле спуститесь стрелочками до последней строки и добавьте новую с таким содержанием:
AllowUsers admin alex
Сохраните конфигурацию “Ctrl+O” и выходите из редактора “Ctrl+X“.
Перезагрузите службу SSH:
sudo service sshd restart
Этим самым Вы разрешили удалённый доступ для пользователей admin и alex, в то время как пользователь sergey удаленно подключиться уже не сможет.
Включите SSH protocol 2
По стандарту SSH работает в режиме версии 1, эта версия устарела и имеет множество уязвимостей но для обеспечения лучшей безопасности рекомендуем переключить работу в режим версии 2. Для этого откройте конфигурационный файл SSH:
sudo nano /etc/ssh/ssh_config
Найдите строку:
# Protocol 2
Удалите символ # – чтобы убрать опцию комментария и задействовать эту строку, дожно получиться так:
Protocol 2
Сохраните конфигурацию “Ctrl+O” и выходите из редактора “Ctrl+X“.
Перезагрузите службу SSH:
sudo service sshd restart
Готово.
Отключить пустые пароли
По умолчанию SSH служба запрещает подключаться пользователям без паролей, но возможно у Вас на сервере эта опция отключена, поэтому откройте конфигурационный файл SSH:
sudo nano /etc/ssh/ssh_config
Найдите строку PermitEmptyPasswords и убедитесь что стоит значение “no“.
PermitEmptyPasswords no
Включите подробный журнал
Чтобы служба SSH вела журнал неудачных подключений с указанием IP – адресов, откройте конфигурационный файл SSH:
sudo nano /etc/ssh/ssh_config
Найдите строку LogLevel и вместо INFO укажите VERBOSE, строка должна получится так:
LogLevel VERBOSE
Сохраните файл “Ctrl+O” и выйдите из редактора “Ctrl+X“.
Перезагрузите службу SSH:
sudo service sshd restart
Можно проверить, вводим команду:
cat /var/log/secure
Система выведит нам информацию, примерно такую:
Jun 21 13:06:28 centos sshd[24851]: Failed password for root from 118.212.143.47 port 48263 ssh2
В начале дата и время, далее ОС и служба sshd – Неверный пароль для пользователя root с адреса 118.212.143.47.
Тоесть по этой записи мы видим что была неудачная попытка проникновения на сервер с указанного адреса.
Спасибо за внимание, на этом всё.
Источник: https://NeoServer.ru/help/zashita_ssh
Настройка безопасного удалённого SSH подключения
В век информационного общества, когда информация становится главным товаром на мировом рынке, и всё больше людей вовлечено в её производство, обработку и надёжное хранение на просторах виртуальной среды, так же как и в реальном мире, разворачивается борьба с преступностью. Преступников в информационном мире называю хакерами. Хакеры используют самые различные сценарии с целью проникнуть в наш виртуальный мир, прихватить с собой какую ни будь информацию или сделать вашу машину инструментом для своих злодеяний.
Ниже приведён не полный список инструментов, которыми пользуются хакеры.
Также как профессионального домушника не остановит закрытая дверь вашей квартиры, так и хакера не остановит сложный пароль. Такой вид преступности в настоящее время очень распространён.
Если при проникновении в помещение преступник подбирает отмычки, ключи, втирается к вам в доверие или просто ворует ключи, когда вы, например, едете в транспорте, то хакер тоже использует подобные методы:
- · Атака с использованием словарей — перебор слов, которые многие пользователи используют в качестве пароля.
- · Атака методом полного перебора (грубой силы) — перебор всех возможных буквенно-цифровых комбинаций.
- · Атака с использованием радужной таблицы – перебор предварительно вычисленных хэшей (числовых значений зашифрованных паролей), используемых большинством современных систем.
- · Фишинг – перенаправление пользователя на поддельные сайты, где пользователю предлагают ввести личные данные.
- · Социальная инженерия – выманивание пароля в реальном мире при личном общении с пользователем.
- · Вредоносное программное обеспечение – установка с помощью вредоносного ПО программ перехвата вводимой с клавиатуры или выводимой на экран информации.
- · Оффлайн хакинг – взлом машины третьей стороны, которая имеет привилегированный доступ к первоначальному объекту.
- · Подглядывание через плечо – физическое проникновение под каким-либо предлогом в офисное помещение с целью подсмотреть пароль.
- · Метод “пауков” – создание словарей с помощью использования информации о вас или вашей компании путём запуска так называемых «паутинных» приложений аналогичных тем, которые применяются ведущими поисковыми системами.
- · Догадки – часто пользователи создают пароли на основе их интересов, хобби, именах домашних животных, семье и т. д.
Более подробную информацию о методах взлома паролей читайте в статье автора Davey Winder «Top ten password cracking techniques».
Ниже приведу скриншоты наиболее используемых программ для взлома, где реализованы выше перечисленные методы.
Из выше сказанного можно сделать вывод, что самым уязвимым местом в безропотности является именно пароль.
Так как большинство серверов и ПК в настоящее время подключены к глобальной сети, то дверью (как традиционный механизм связывающий нас в реальности с внешним миром) является удалённый доступ. Большинство серверов на просторах Интернет управляются удалённо.
Причём сами администраторы могут никогда и не увидеть реальную машину, которой они управляют.
В силу того, что 99% серверов работают на UNIXсистемах, то стандартным протоколом де-факто, позволяющий производить удалённое управление операционной системой, стал протокол SSH.
SSH (англ. Secure Shell — «безопасная оболочка») — сетевой протокол прикладного уровня, позволяющий производить удалённое управление операционной системой и туннелирование TCP-соединений (например, для передачи файлов).
Схож по функциональности с протоколами Telnet и rlogin, но в отличие от них шифрует весь трафик, включая и передаваемые пароли. SSH допускает выбор различных алгоритмов шифрования [1]. Этот протокол разрабатывался для противодействия целому ряду возможных атак.
Изначально SSH был отрытым программным обеспечением (протокол SSH1), но со временем он трансформировался в коммерческий продукт с более надежной системой защиты (протокол SSH2).
Развитие отрытого, свободно распространяемого пакета удалённого управления не остановилось, поэтому в настоящее время он доступен под названием OpenSSH, в котором реализованы эти два протокола.
Основными компонентами пакета OpenSSHявляются:
- · Серверный демон sshd.
- · Утилита для удаленной регистрации ssh.
- · Утилита для копирования файловscp.
- · Генератор ключей ssh-keygen.
- · Утилиты для поддержки безопасных серверов X Window.
Демон sshd способен аутентифицировать пользователей различными способами.
Способ 1.Доступ в систему без проверки пароля подобно старому демону rlogind за исключением того, что все данные, передаваемые в ходе сеанса, подвергаются шифрованию.
Способ 2.Дополняет способ 1 шифрованием с отрытым ключом для проверки адреса удаленного компьютера. Если удаленный компьютер предоставляет соответствующий секретный ключ, то пользователю разрешается войти в систему без проверки пароля.
Способ 3.Шифрованием с отрытым ключом для идентификации самого пользователя. На этапе регистрации пользователь должен иметь доступ к файлу своего секретного ключа и предоставить пароль для его дешифровки.
Способ 4. Доступ в систему с проверкой пароля подобно старому демону telnet за исключением того, что пароль и все данные, передаваемые в ходе сеанса, подвергаются шифрованию. Именно такой метод используется по умолчанию.
Как было уже отмечено, протокол SSHявляется своеобразной дверью, ограждающую сервер от нежелательных «посетителей». Поэтому существуют рекомендации по укреплению такого дверного проёма [2].
- 1. Запрещение удалённого root-доступа.
- 2. Запрещение подключения с пустым паролем или отключение входа по паролю.
- 3. Выбор нестандартного порта для SSH-сервера.
- 4. Использование длинных SSH2 RSA-ключей (2048 бит и более).
- 5. Ограничение списка IP-адресов, с которых разрешён доступ (например, настройкой файервола).
- 6. Запрещение доступа с некоторых потенциально опасных адресов.
- 7. Отказ от использования распространённых или широко известных системных логинов для доступа по SSH.
- 8. Регулярный просмотр сообщений об ошибках аутентификации.
- 9. Установка систем обнаружения вторжений (IDS).
- 10. Использование ловушек, подделывающих SSH-сервис (honeypot).
И так, исходя из описания и рекомендаций, самым защищённым способом унификации является способ №3, но он так же имеет недостаток — утомляет пользователей и затрудняет возможность регистрации в системе мобильных пользователей (им приходиться носить с собой копию файла секретного ключа).
Рассмотрим принцип работы данного метода:
Пользователь генерирует 2 ключа – секретный и публичный. Секретный ключ находиться у пользователя, публичный – на сервере. При генерации ключей предлагается выбрать пароль для зашифровки секретного ключа.
Таким образом, если злоумышленник завладеет паролем, то без секретного ключа он не сможет войти в систему, а если завладеет секретным ключом, то без пароля он не сможет его расшифровать. Необходимо отметить, что пары ключей генерируются для каждого пользователя отдельно, т.е.
если предполагается разрешить доступ нескольким пользователям, то для каждого юзера необходимо сгенерировать собственную пару ключей. Поэтому, если даже злоумышленник завладел и секретным ключом и паролем, ему необходимо знать ещё и имя пользователя.
Приступим к практической организации безлопастного удалённого соединения SSH.
Первым делом необходимо создать пользователя, который в дальнейшем будет иметь доступ к удалённому администрированию сервера.
Затем нужно сгенерировать пару ключей.
В домашней директории пользователя должны появиться файлы ключей. Ключ с расширением .ppk является секретным, а с расширением .ppk.pub– публичным. Секретный ключ необходимо сразу же скачать на свой рабочий компьютер или флэш-память.
Ниже представлено содержимое файлов ключей.
После того, как ключи будут созданы, необходимо создать скрытую директорию и создать в ней файл authorized_keys с содержимым публичного ключа.
Далее нужно выставить соответствующие права доступа к созданным ранее директории и файлу.
Теперь можно перейти к настройке самого демона SSH. Все действия необходимо выполнять от имени root.
Главным конфигурационным файлом сервиса SSHявляется ssh_config.
В нём необходимо сделать следующие изменения:
Закомментировать следующие строки:
А так же добавить следующую конфигурацию. Первая строка запрещает вход по SSHпользователю root, вторая и третья — разрешает аутентификацию пользователей по методу шифрования с открытым ключом, четвёртая указывает на место расположения публичного ключа, пятая и шестая запрещает использование обычных регистрационных паролей.
После сделанных изменений, необходимо перезагрузить демон SSH.
Попробуем удалённо соединиться с сервером через клиент Xshell. Как можно увидеть на скриншоте, поля для ввода пароля стали неактивными.
Если аутентификация прошла успешно, то для большей надёжности изменим порт по умолчанию SSHсоединения в файле конфигурации демона SSH.
Теперь удалённо войти, не зная порт, не получится.
Сейчас у администраторов UNIXсистем очень большой популярностью пользуется SSHклиент PuTYY. Работа с ключами в PuTYYимеет свои тонкости, поэтому более подробно остановлюсь на этой программе.
Для удалённой работы с сервером посредством аутентификации с помощью ключа через PuTYYнеобходимо скачать дополнительную программу PuTTYGen, так как сама PuTYYне умеет работать с ключами сгенерированными на UNIXсистемах. С помощью данной программы необходимо перевести ключ в формат PuTYY.
Сначала загружается ключ.
Затем вводится пароль расшифровки ключа.
И сохраняется изменённый ключ.
Теперь, можно настроить PuTYYдля работы с секретным ключом. Для этого необходимо войти в раздел Connection->SSH->Auth и выбрать путь к сохранённому ключу.
Затем нужно выставить IPадрес или доменное имя сервера и порт подключения к SSHв разделе Session.
После успешного соединения, PuTYYзапросит логин и пароль для расшифровки ключа.
Также с помощью PuTYYGenможно сгенерировать ключи для сервера. Для этого необходимо нажать кнопку Generate.
Для процесса генерации ключей программа требует совершать произвольные движения “мышью” по полю ниже полосы состояния генерации — для заполнения массива случайных чисел.
После завершения генерации ключи сохраняются.
Далее публичный ключ необходимо привести к следующему виду:
ssh-rsa {Ваш шифр без скобок}
+OObuQ== rsa-key-20121116
и разместить на сервере, как было описано выше.
В заключение хотелось бы напомнить, что злоумышленники использующие программы, основанные на применении метода «грубой силы», заставляютобращать внимание на ненадежность паролей.
Даже наличие инструментов вроде РАМ и механизма устаревания паролей ваша система не будет защищена, так же никогда не следует разрешать учетной записи root регистрироваться удаленно.
Доступ супер пользователя должен получаться путем использования команды su.
Скачать PuTYYGen
Литература
- 1. Материал из Википедии — свободной энциклопедии https://ru.wikipedia.org
- 2. Руководство администратора Linux— Эви Немет и др. Москва 2007.
- 3. Библия хакера. Книги 1, 2 — Левин М. М.: Майор, 2003.
- 4. Самоучитель хакера: подроб. иллюстрир. рук.: [учеб. пособие] — Alex Atsctoy. М.: Лучшие книги, 2005.
- 5. Linuxглазами хакера – Фленов М.Е. Спб: БВХ-Петербург,2005.
Источник: https://spy.uz/articles/tips/nastroika-bezopasnogo-udalyonnogo-ssh-po.html
Как настроить сервер ssh для безопасного соединения
Описывается как настроить сервер ssh для создания безопасного подключения. Дается пошаговая инструкция с пояснениями.
В статье «Что такое ssh/sftp, для чего он нужен?» я написал, как подготовить клиент ssh для управления сервером, сгенерировать ключи и получить файл authorized_keys2 на USB накопителе.
Как настроить сервер ssh на сервере на Linux
Если вы не использовали наш шаблон виртуальной машины, то все будет намного сложнее.
1. Надо при помощи sftp переписать полученный файл authorized_keys2 на сервер (Рис. 2.). Как пользоваться программой безопасной передачи файлов sftp я написал и статьях “Клиент sftp. Краткое описание” (Linux и OSX), “PSFTP – SFTP клиент PuTTY для Windows” и “Клиент SSH для Windows Bitvise Tunnelier“
sftp [email protected], ввести по запросу пароль root и, после того, как получим Connected to 192.168.22.4., ввести
put author*, и после того, как передача файла завершиться, ввести
exit
Рис. 2. Запись authorized_keys2 на сервер
2. Придумать хороший пароль для пользователя admin (о хороших паролях я писал здесь).
3. Войти на сервер через безопасное соединение ssh как суперпользователь root (дистрибутивы Linux с настройками по умолчанию, к сожалению, это допускают).
ssh [email protected] ввести пароль root по запросу и получим: Last login: Mon Nov 4 10:46:38 2013 from 192.168.14.6
[root@www ~]# теперь Вы суперпользователь сервера.
4. Создаем пользователя admin и задаем его пароль. Если Вам не нравится имя пользователя admin, то Вы можете выбрать любое другое и везде admin надо заменить выбранным Вами именем.
[root@www ~]# useradd admin
[root@www ~]# passwd admin и дважды ввести пароль пользователя admin Changing password for user admin. New password: Retype new password:
passwd: all authentication tokens updated successfully.
5. Переходим в домашнюю директорию пользователя admin, создаем папку .ssh, переносим туда файл authorized_keys2 и устанавливаем необходимые права доступа (Рис.3)
cd /home/admin
mkdir .ssh
chmod 0700 .ssh
cp /root/authorized_keys2 .ssh/
chown -R admin.admin .ssh
Рис. 3. Создание пользователя admin
6. Изменяем при помощи редактора vi конфигурационный файл сервера ssh. Как пользоваться редактором vi описано в “Редактор vi. Краткая инструкция“.
rm /etc/ssh/sshd_config удаляем старый файл конфигурации
rm: remove regular file `/etc/ssh/sshd_config’? y подтверждаем удаление файла (вводим «y»)
vi /etc/ssh/sshd_config и создаем новый
Далее в открывшемся окошке редактора vi вводим команду «i» (insert), копируем весь конфигурационный файл ниже и вставляем в окошко редактора vi.
# This is ssh server systemwide configuration file. Port 22 Protocol 2 ListenAddress 0.0.0.
0 #ListenAddress :: HostKey /etc/ssh/ssh_host_key HostKey /etc/ssh/ssh_host_rsa_key ServerKeyBits 1024 LoginGraceTime 60 KeyRegenerationInterval 3600 PermitRootLogin no IgnoreRhosts yes IgnoreUserKnownHosts yes StrictModes yes X11Forwarding no #X11DisplayOffset 10 PrintMotd yes KeepAlive yes # Logging SyslogFacility AUTH LogLevel INFO #RhostsAuthentication no RhostsRSAAuthentication no RSAAuthentication no PasswordAuthentication no PermitEmptyPasswords no AllowUsers admin #PAMAuthenticationViaKbdInt yes # Uncomment if you want to enable sftp Subsystem sftp /usr/libexec/openssh/sftp-server
MaxStartups 10:30:60
Должен появиться точно такой текст, как этот. Если это так, то для выхода из режима редактирования надо нажать клавишу «esc» и последовательность «:wq» для записи файла и выхода из редактора (Рис. 4).
Рис. 4. Конфигурационный файл сервера ssh
Что это нам даст:
Во-первых, мы запретили вход при помощи ввода пароля – теперь для входа пользователя через ssh необходимо иметь секретный ключ у клиента и знать его пароль, открытый (публичный) ключ в файле authorized_keys2 на сервере, что существенно снижает риск взлома сервера перебором паролей. (Вы сможете увидеть такие попытки в логах Вашего сервера).
Во-вторых, мы запретили вход суперпользователя root через соединение ssh совсем. Для того, чтобы стать суперпользователем, вошедшему пользователю необходимо знать еще и пароль root для команды su.
В третьих, вход на сервере разрешен только пользователю с именем admin и все остальные имена пользователей будут отвергаться (я все-таки думаю, что сменить admin на что-то другое, которое никто не знает является хорошей идеей).
7. Перезапускаем сервер ssh:
/etc/init.d/sshd restart Stopping sshd: [ OK ]
Starting sshd: [ OK ]
8. Проверяем:
Если успешно вошли на сервер, (что должно быть), то все в порядке. Можете попробовать войти под root – не должно получиться.
Как настроить сервер ssh на базе нашей виртуальной машины
Если Вы используете (будете использовать) сервер на базе нашей виртуальной машины, то, единственное, что Вам теперь нужно, это вставить USB накопитель в компьютер, на котором находится файл authorized_keys2. Все остальные настройки сервера ssh, в том числе необходимые настройки безопасности, будут выполнены за Вас программой установки.
После того, как программа установки завершит работу и перезагрузит сервер, Вы можете подключиться к нему со своего клиента ssh и установить нужные прикладные сервисы – почтовый сервер, сайт, сервер 1С Предприятия и т.д.
Допустим, IP адрес сервера 192.168.22.4. Тогда набираем на терминале клиента (рис.1):
ssh [email protected] ,ввести на запрос пароль ключа ssh и должны получить Last login: Tue Jan 28 22:46:48 2014 from 192.168.14.6
[admin@www ~]$
Рис. 1. Вход на сервер
То есть, мы попали на сервер в качестве пользователя admin в папку /home/admin или ~
Из-за ограничений безопасности, вход на сервер через ssh разрешен только для пользователей, не обладающих правами пользователя root и, если необходимо выполнять команды от имени суперпользователя root, надо использовать sudo или su (Рис. 1.). Для тех, кто не очень знаком с Linux, рекомендую прочитать статьи “Несколько слов о Linux” и “Команды Linux. Краткое описание“
[admin@www ~]$ su Password: Вводим пароль суперпользователя root
[root@www admin]#
Теперь Вы суперпользователь и можете управлять сервером – устанавливать и удалять прикладные сервисы – почтовый сервер, web-сервер, сервер 1С, сервер лицензий 1С, WEB-сайт и т. д.
Описано как настроить сервер ssh для создания безопасного подключения и установки прикладных сервисов.
Subscribe to our e-mail newsletter to receive updates.
Источник: https://www.stseprounof.org/kak-nastroit-server-ssh/