Бесплатно — SSH-туннели. Раздача!
amigo_trade Продавец
Открыть профиль
- Статус:
- Вне сети
- Регистрация:
- 27.02.2017
- Сообщения:
- 16
- Симпатии:
- 10
Периодически буду выкладывать ssh-туннели.
SSH находятся в блэк-листах. Возможно материал будет кому-то полезен (для тестирования, серфинга и т.п.)
Перед публикацией проверяю туннели на коннект и трафик.
Всем добра!Europe mix:
- 217.133.235.91|admin|1234|Italy|Lazio|Rome|119
- 185.148.103.9|admin|12345678|Italy|Lombardia|Sant’angelo Lodigiano|26866
- 88.86.164.14|admin|12345678|Italy|Veneto|Venice|30126
- 95.210.238.188|admin|admin|Italy|Campania|Telese|82037
- 2.193.6.231|admin|admin01|Italy|Emilia-Romagna|Ferrara|44122
- 82.146.89.112|root|public|Norway|Buskerud|Noresund|3536
- 82.146.93.97|root|public|Norway|Buskerud|Prestfoss|3350
- 82.146.94.55|root|public|Norway|Buskerud|Vikersund|3370
- 82.146.93.165|root|public|Norway|Buskerud|Prestfoss|3350
- 82.146.94.140|root|public|Norway|Buskerud|Vikersund|3370
- 185.11.64.100|admin|password|Ireland|N/A||N/A
- 5.179.66.215|admin|password|Ireland|Dublin|Dublin|N/A
- 88.151.27.70|admin|password|Ireland|N/A||N/A
- 46.59.49.35|ubnt|ubnt|Sweden|Stockholms Lan|Stockholm|173 11
- 109.104.19.86|ubnt|ubnt|Sweden|Stockholms Lan|Stockholm|173 11
amigo_trade Продавец
Открыть профиль
Бесплатные SSH туннели. Раздача.
Восстанавливаю свою раздачу туннелей!В данном разделе буду выкладывать, как правило, отработки своих туннелей и не буду писать, что не в курсе какие они) Как правило, большенство в блеке, но если будут бонусы, то обязательно уточню!
Думаю, некоторым будет полезен мат. Потому от благодарности и репутации не отказался бы, но это по желанию… На момент размещения, все туннели проверяю на коннект и траф, при наличии времени! Выкладывать буду по странам.
Всем добра!
И в этот раз решил добавить немного US (Америка).
96.231.214.194:22;admin;admin | DestinationIP: 96.231.214.194 | Country: United States | State: Maryland | City: Silver Spring | ZIP: 20906 | ISP: Verizon FiOS |
50.22.208.5:22;admin;admin | DestinationIP: 50.22.208.5 | Country: United States (US) | State: Virginia (VA) | City: Chantilly | ZIP: 22022 | ISP: SoftLayer Technologies |
192.225.180.46:22;admin;default | DestinationIP: 192.225.180.42 | Country: United States (US) | State: Idaho (ID) | City: Rexburg | ZIP: 83440 | ISP: Blackfoot Telephone Cooperative |
207.183.187.144:22;admin;default | DestinationIP: 207.183.187.132 | Country: United States (US) | State: Wyoming (WY) | City: Jackson | ZIP: 83001 | ISP: Silverstar Telephone Co. |
64.203.249.205:22;admin;default | DestinationIP: 64.203.249.196 | Country: United States | State: Georgia | City: Savannah | ZIP: 31419 | ISP: Hargray Communications Group |
66.114.39.251:22;admin;default | DestinationIP: 66.114.39.244 | Country: United States (US) | State: Washington (WA) | City: La Conner | ZIP: 98257 | ISP: PogoZone |
71.123.60.26:22;admin;admin | DestinationIP: 71.123.60.26 | Country: United States (US) | State: Pennsylvania (PA) | City: Philadelphia | ZIP: 19127 | ISP: Verizon FiOS |
64.203.249.205:22;admin;default | DestinationIP: 64.203.249.196 | Country: United States (US) | State: Georgia (GA) | City: Savannah | ZIP: 31419 | ISP: Hilton Ocean Resort |
blackbiz.cc
| Online |
getssh.net
Практические советы, примеры и туннели SSH / Habr
Практические примеры SSH, которые выведут на новый уровень ваши навыки удалённого системного администратора. Команды и советы помогут не только использовать
SSH
, но и более грамотно перемещаться по сети.Знание нескольких трюков ssh
полезно любому системному администратору, сетевому инженеру или специалисту по безопасности.
Практические примеры SSH
- SSH socks-прокси
- Туннель SSH (переадресация портов)
- SSH-туннель на третий хост
Обратный SSH-туннель- Обратный прокси SSH
- Установка VPN по SSH
- Копирование ключа SSH (ssh-copy-id)
- Удалённое выполнение команд (неинтерактивно)
- Удалённый перехват пакетов и просмотр в Wireshark
- Копирование локальной папки на удалённый сервер по SSH
- Удалённые приложения GUI с переадресацией SSH X11
- Удалённое копирование файлов с помощью rsync и SSH
- SSH через сеть Tor
- SSH к инстансу EC2
- Редактирование текстовых файлов с помощью VIM через ssh/scp
- Монтирование удалённого SSH как локальной папки с SSHFS
- Мультиплексирование SSH с помощью ControlPath
- Потоковое видео по SSH с помощью VLC и SFTP
- Двухфакторная аутентификация
- Прыжки по хостам с SSH и -J
- Блокировка попыток брутфорса SSH с помощью iptables
- SSH Escape для изменения переадресации портов
Разбор командной строки SSH
В следующем примере используются обычные параметры, часто встречающиеся при подключении к удалённому серверу
SSH
.localhost:~$ ssh -v -p 22 -C neo@remoteserver
-v
: вывод отладочной информации особенно полезен при анализе проблем аутентификации. Можно использовать несколько раз для вывода дополнительной информации.- p 22
: порт для подключения к удалённому серверу SSH. 22 не обязательно указывать, потому что это значение по умолчанию, но если протокол на каком-то другом порту, то указываем его с помощью параметра-p
. Порт прослушивания указывается в файлеsshd_config
в форматеPort 2222
.-C
: сжатие для соединения. Если у вас медленный канал или вы просматриваете много текста, это может ускорить связь.neo@
: строка перед символом @ обозначает имя пользователя для аутентификации на удалённом сервере. Если не указать его, то по умолчанию будет использоваться имя пользователя учётной записи, в которую вы вошли в данный момент (~$ whoami). Пользователя также можно указать параметром-l
.remoteserver
: имя хоста, к которому подключаетсяssh
, это может быть полное доменное имя, IP-адрес или любой хост в локальном файле hosts. Для подключения к хосту, который поддерживает и IPv4, и IPv6, можно добавить в командную строку параметр-4
или-6
для правильного резолвинга.
Все вышеперечисленные параметры являются необязательными, кроме
remoteserver
.Использование файла конфигурации
Хотя многие знакомы с файлом
sshd_config
, есть ещё файл конфигурации клиента для команды ssh
. Значение по умолчанию ~/.ssh/config
, но его можно определить как параметр для опции -F
.Host *
Port 2222
Host remoteserver
HostName remoteserver.thematrix.io
User neo
Port 2112
IdentityFile /home/test/.ssh/remoteserver.private_key
В приведённом выше примерном файле конфигурации ssh две записи хоста. Первая обозначает все хосты, для всех применяется параметр конфигурации Port 2222. Вторая говорит, что для хоста remoteserver следует использовать другое имя пользователя, порт, FQDN и IdentityFile.
Файл конфигурации может сэкономить много времени на ввод символов, позволяя автоматически применять продвинутую конфигурацию при подключении к конкретным хостам.
Копирование файлов по SSH с помощью SCP
SSH-клиент поставляется с двумя другими очень удобными инструментами для копирования файлов по зашифрованному ssh-соединению. Ниже см. пример стандартного использования команд scp и sftp. Обратите внимание, что многие параметры для ssh применяются и в этих командах.
localhost:~$ scp mypic.png neo@remoteserver:/media/data/mypic_2.png
В этом примере файл mypic.png скопирован на remoteserver в папку /media/data и переименован в mypic_2.png.
Не забывайте о разнице в параметре порта. На этом попадаются многие, кто запускает scp
из командной строки. Здесь параметр порта -P
, а не -p
, как в ssh-клиенте! Вы забудете, но не волнуйтесь, все забывают.
Для тех, кто знаком с консольным ftp
, многие из команд похожи в sftp
. Вы можете сделать push, put и ls, как сердце пожелает.
sftp neo@remoteserver
Во многих из этих примеров можно достичь результата разными методами. Как и во всех наших учебниках и примерах, предпочтение отдаётся практическим примерам, которые просто делают своё дело.
1. SSH socks-прокси
Функция SSH Proxy под номером 1 по уважительной причине. Она более мощная, чем многие предполагают, и даёт вам доступ к любой системе, к которой имеет доступ удалённый сервер, используя практически любое приложение. Клиент ssh может туннелировать трафик через прокси-сервер SOCKS одной простой командой. Важно понимать, что трафик к удалённым системам будет исходить от удалённого сервера, так будет указано в логах веб-сервера.
localhost:~$ ssh -D 8888 user@remoteserver
localhost:~$ netstat -pan | grep 8888
tcp 0 0 127.0.0.1:8888 0.0.0.0:* LISTEN 23880/ssh
Здесь мы запускаем socks-прокси на TCP-порту 8888, вторая команда проверяет, что порт активен в режиме прослушивания. 127.0.0.1 указывает, что служба работает только на localhost. Мы можем применить немного другую команду для прослушивания всех интерфейсов, включая ethernet или wifi, это позволит другим приложениям (браузерам и т д.) в нашей сети подключаться к прокси-сервису через ssh socks-прокси.
localhost:~$ ssh -D 0.0.0.0:8888 user@remoteserver
Теперь можем настроить браузер для подключения к socks-прокси. В Firefox выберите Настройки | Основные | Параметры сети. Укажите IP-адрес и порт для подключения.
Обратите внимание на опцию в нижней части формы, чтобы DNS-запросы браузера тоже шли через прокси SOCKS. Если используете прокси-сервер для шифрования веб-трафика в локальной сети, то наверняка захотите выбрать эту опцию, чтобы DNS-запросы туннелировались через SSH-соединение.
Активация socks-прокси в Chrome
Запуск Chrome с определёнными параметрами командной строки активирует socks-прокси, а также туннелирование DNS-запросов из браузера. Доверяй, но проверяй. Используйте tcpdump для проверки, что DNS-запросы больше не видны.
localhost:~$ google-chrome --proxy-server="socks5://192.168.1.10:8888"
Использование других приложений с прокси
Имейте в виду, что многие другие приложения тоже могут использовать socks-прокси. Веб-браузер просто самое популярное из них. У некоторых приложений есть параметры конфигурации для активации прокси-сервера. Другим нужно немного помочь вспомогательной программой. Например, proxychains позволяет запустить через socks-прокси Microsoft RDP и др.
localhost:~$ proxychains rdesktop $RemoteWindowsServer
Параметры конфигурации socks-прокси задаются в файле конфигурации proxychains.
Подсказка: если используете удалённый рабочий стол из Linux на Windows? Попробуйте клиент FreeRDP. Это более современная реализация, чем rdesktop
, с гораздо более плавным взаимодействием.
Вариант использования SSH через socks-прокси
Вы сидите в кафе или гостинице — и вынуждены использовать довольно ненадёжный WiFi. С ноутбука локально запускаем ssh-прокси и устанавливаем ssh-туннель в домашнюю сеть на локальный Rasberry Pi. Используя браузер или другие приложения, настроенные для socks-прокси, мы можем получить доступ к любым сетевым службам в нашей домашней сети или выйти в интернет через домашнее подключение. Всё между вашим ноутбуком и домашним сервером (через Wi-Fi и интернет до дома) зашифровано в туннеле SSH.
2. Туннель SSH (переадресация портов)
В простейшей форме SSH-туннель просто открывает порт в вашей локальной системе, который подключается к другому порту на другом конце туннеля.
localhost:~$ ssh -L 9999:127.0.0.1:80 user@remoteserver
Разберём параметр
-L
. Его можно представить как локальную сторону прослушивания. Таким образом, в примере выше порт 9999 прослушивается на стороне localhost и переадресуется через порт 80 на remoteserver. Обратите внимание, что 127.0.0.1 относится к localhost на удалённом сервере!Поднимемся на ступеньку. В следующем примере порты прослушивания связываются с другими узлами локальной сети.
localhost:~$ ssh -L 0.0.0.0:9999:127.0.0.1:80 user@remoteserver
В этих примерах мы подключаемся к порту на веб-сервере, но это может быть прокси-сервер или любая другая служба TCP.
3. SSH-туннель на сторонний хост
Мы можем использовать те же параметры для подключения туннеля с удалённого сервера к другой службе, запущенной на третьей системе.
localhost:~$ ssh -L 0.0.0.0:9999:10.10.10.10:80 user@remoteserver
В данном примере мы перенаправляем туннель от remoteserver к веб-серверу, работающему на 10.10.10.10. Трафик с remoteserver к 10.10.10.10 уже не в SSH-туннеле. Веб-сервер на 10.10.10.10 будет считать remoteserver источником веб-запросов.
4. Обратный SSH-туннель
Здесь настроим прослушивающий порт на удалённом сервере, который будет подключаться обратно к локальному порту на нашем localhost (или другой системе).
localhost:~$ ssh -v -R 0.0.0.0:1999:127.0.0.1:902 192.168.1.100 user@remoteserver
В этой SSH-сессии устанавливается соединение с порта 1999 на remoteserver к порту 902 на нашем локальном клиенте.
5. Обратный прокси SSH
В этом случае мы устанавливаем socks-прокси на нашем ssh-соединении, однако прокси слушает на удалённом конце сервера. Подключения к этому удалённому прокси теперь появляются из туннеля как трафик с нашего localhost.
localhost:~$ ssh -v -R 0.0.0.0:1999 192.168.1.100 user@remoteserver
Устранение проблем с удалёнными SSH-туннелями
Если у вас возникли проблемы с работой удалённых опций SSH, проверьте с помощью
netstat
, к каким ещё интерфейсам подключён порт прослушивания. Хотя мы в примерах указали 0.0.0.0, но если значение GatewayPorts в sshd_config установлено в значение no, то листенер будет привязан только к localhost (127.0.0.1).Предупреждение безопасности
Обратите внимание, что при открытии туннелей и socks-прокси внутренние сетевые ресурсы могут быть доступны ненадёжным сетям (например, интернету!). Это может быть серьёзной угрозой безопасности, поэтому убедитесь, что вы понимаете, что представляет собой слушатель и к чему у него есть доступ.
6. Установка VPN по SSH
Общий термин среди спецов по методам атаки (пентестеры и проч.) — это «точка опоры в сети». После установления соединения в одной системе эта система становится шлюзом для дальнейшего доступа к сети. Точка опоры, которая позволяет двигаться вширь.
Для такой точки опоры мы можем использовать SSH-прокси и proxychains, однако есть некоторые ограничения. Например, не получится работать напрямую с сокетами, поэтому мы не сможем сканировать порты внутри сети через Nmap SYN
.
Используя этот более продвинутый вариант VPN, подключение снижается до уровня 3. Затем мы можем просто направить трафик через туннель, используя стандартную сетевую маршрутизацию.
Метод использует ssh
, iptables
, tun interfaces
и маршрутизацию.
Сначала нужно задать эти параметры в sshd_config
. Поскольку мы вносим изменения в интерфейсы и удалённой, и клиентской системы, нам нужны права root с обеих сторон.
PermitRootLogin yes
PermitTunnel yes
Затем установим ssh-соединение, используя параметр, который запрашивает инициализацию tun-устройств.
localhost:~# ssh -v -w any root@remoteserver
Теперь у нас должно быть устройство tun при показе интерфейсов (
# ip a
). Следующий шаг добавит IP-адреса к туннельным интерфейсам.Сторона клиента SSH:
localhost:~# ip addr add 10.10.10.2/32 peer 10.10.10.10 dev tun0
localhost:~# ip tun0 up
Сторона сервера SSH:
remoteserver:~# ip addr add 10.10.10.10/32 peer 10.10.10.2 dev tun0
remoteserver:~# ip tun0 up
Теперь у нас прямой маршрут к другому хосту (
route -n
и ping 10.10.10.10
).Можно маршрутизировать любую подсеть через хост на другой стороне.
localhost:~# route add -net 10.10.10.0 netmask 255.255.255.0 dev tun0
На удалённой стороне необходимо включить
ip_forward
и iptables
.remoteserver:~# echo 1 > /proc/sys/net/ipv4/ip_forward
remoteserver:~# iptables -t nat -A POSTROUTING -s 10.10.10.2 -o enp7s0 -j MASQUERADE
Бум! VPN через туннель SSH на сетевом уровне 3. Вот это уже победа.
Если возникают какие-то проблемы, используйте tcpdump и ping
, чтобы установить причину. Поскольку мы играем на уровне 3, то наши пакеты icmp пойдут через этот туннель.
7. Копирование ключа SSH (ssh-copy-id)
Тут есть несколько способов, но эта команда экономит время, чтобы не копировать файлы вручную. Она просто копирует ~/.ssh/id_rsa.pub (или ключ по умолчанию) с вашей системы в
~/.ssh/authorized_keys
на удалённом сервере.localhost:~$ ssh-copy-id user@remoteserver
8. Удалённое выполнение команд (неинтерактивно)
Команду
ssh
можно связать с другими командам для обычного удобного интерфейса. Просто добавьте команду, которую хотите запустить на удалённом хосте, в качестве последнего параметра в кавычках.localhost:~$ ssh remoteserver "cat /var/log/nginx/access.log" | grep badstuff.php
В данном примере
grep
выполняется на локальной системе после того, как лог скачался по ssh-каналу. Если файл большой, удобнее запустить grep
на удалённой стороне, просто заключив обе команды в двойные кавычки.Другой пример выполняет ту же самую функцию, что и ssh-copy-id
из примера 7.
localhost:~$ cat ~/.ssh/id_rsa.pub | ssh remoteserver 'cat >> .ssh/authorized_keys'
9. Удалённый перехват пакетов и просмотр в Wireshark
Я взял один из наших примеров по tcpdump. Используйте его для удалённого перехвата пакетов с выдачей результата непосредственно в GUI локального Wireshark.
:~$ ssh root@remoteserver 'tcpdump -c 1000 -nn -w - not port 22' | wireshark -k -i -
10. Копирование локальной папки на удалённый сервер по SSH
Красивый трюк, который сжимает папку с помощью
bzip2
(это параметр -j в команде tar
), а затем извлекает поток bzip2
на другой стороне, создавая на удалённом сервере дубликат папки.localhost:~$ tar -cvj /datafolder | ssh remoteserver "tar -xj -C /datafolder"
11. Удалённые приложения GUI с переадресацией SSH X11
Если на клиенте и удалённом сервере установлены «иксы», то можно удалённо выполнить команду GUI, с окном на вашем локальном рабочем столе. Эта функция существует давным давно, но по-прежнему очень полезна. Запустите удалённый веб-браузер или даже консоль VMWawre Workstation, как я делаю в этом примере.
localhost:~$ ssh -X remoteserver vmware
Требуется строка
X11Forwarding yes
в файле sshd_config
.12. Удалённое копирование файлов с помощью rsync и SSH
rsync
во многом удобнее scp
, если требуется периодическое резервное копирование каталога, большого количества файлов или очень больших файлов. Здесь есть функция восстановления после сбоя передачи и копирования только изменённых файлов, что сохраняет трафик и время.В этом примере используется сжатие gzip
(-z) и режим архивирования (-a), который включает рекурсивное копирование.
:~$ rsync -az /home/testuser/data remoteserver:backup/
13. SSH через сеть Tor
Анонимная сеть Tor может туннелировать SSH-трафик с помощью команды
torsocks
. Следующая команда прокинет ssh-прокси через Tor.localhost:~$ torsocks ssh myuntracableuser@remoteserver
Torsocks будет использовать для прокси порт 9050 на localhost. Как всегда при использовании Tor необходимо серьёзно проверять, какой трафик туннелируется и другие проблемы операционной безопасности (opsec). Куда идут ваши DNS-запросы?
14. SSH к инстансу EC2
Для подключения к инстансу EC2 необходим закрытый ключ. Скачайте его (расширение .pem) из панели управления Amazon EC2 и измените разрешения (
chmod 400 my-ec2-ssh-key.pem
). Храните ключ в надёжном месте или поместите его в свою папку ~/.ssh/
.localhost:~$ ssh -i ~/.ssh/my-ec2-key.pem ubuntu@my-ec2-public
Параметр -i просто указывает ssh-клиенту использовать этот ключ. Файл
~/.ssh/config
идеально подходит для автоматической настройки использования ключа при подключении к хосту ec2.Host my-ec2-public
Hostname ec2???.compute-1.amazonaws.com
User ubuntu
IdentityFile ~/.ssh/my-ec2-key.pem
15. Редактирование текстовых файлов с помощью VIM через ssh/scp
Для всех любителей
vim
этот совет сэкономит немного времени. С помощью vim
файлы редактируются по scp одной командой. Этот метод просто создаёт файл локально в /tmp
, а затем копирует его обратно, как только мы его сохранили из vim
.localhost:~$ vim scp://user@remoteserver//etc/hosts
Примечание: формат немного отличается от обычного
scp
. После хоста у нас двойной //
. Это ссылка на абсолютный путь. Один слэш будет означать путь относительно домашней папки users
.**warning** (netrw) cannot determine method (format: protocol://[user@]hostname[:port]/[path])
Если увидите такую ошибку, дважды проверьте формат команды. Обычно это означает синтаксическую ошибку.
16. Монтирование удалённого SSH как локальной папки с SSHFS
При помощи
sshfs
— клиента файловой системы ssh
— мы можем подключить локальный каталог к удалённому местоположению со всеми взаимодействиями файлов в зашифрованном сеансе ssh
.localhost:~$ apt install sshfs
На Ubuntu и Debian установим пакет
sshfs
, а затем просто приимонтируем удалённое расположение к нашей системе.localhost:~$ sshfs user@remoteserver:/media/data ~/data/
17. Мультиплексирование SSH с помощью ControlPath
По умолчанию при наличии существующего подключения к удалённому серверу с помощью
ssh
второе подключение с помощью ssh
или scp
устанавливает новый сеанс с дополнительной аутентификацией. Опция ControlPath
позволяет использовать существующий сеанс для всех последующих соединений. Это значительно ускорит процесс: эффект заметен даже в локальной сети, а тем более при подключении к удалённым ресурсам.Host remoteserver
HostName remoteserver.example.org
ControlMaster auto
ControlPath ~/.ssh/control/%r@%h:%p
ControlPersist 10m
ControlPath указывает сокет для проверки новыми соединениями на предмет наличия активной сессии
ssh
. Последняя опция означает, что даже после выхода из консоли существующий сеанс останется открытым 10 минут, так что в течение этого времени вы сможете повторно подключиться по существующему сокету. Для дополнительной информации смотрите справку ssh_config man
.18. Потоковое видео по SSH с помощью VLC и SFTP
Даже давние пользователи
ssh
и vlc
(Video Lan Client) не всегда знают об этой удобной опции, когда очень нужно посмотреть видео по сети. В настройках File | Open Network Stream программы vlc
можно ввести местоположение как sftp://
. Если требуется пароль, появится запрос.sftp://remoteserver//media/uploads/myvideo.mkv
19. Двухфакторная аутентификация
Такая же двухфакторная аутентификация, как у вашего банковского счёта или учётной записи Google, применима к сервису SSH.
Конечно, ssh
изначально имеет функцию двухфакторной аутентификации, под которой подразумеваются пароль и ключ SSH. Преимущество аппаратного токена или приложения Google Authenticator заключается в том, что это обычно другое физическое устройство.
См. наше 8-минутное руководство по использованию Google Authenticator и SSH.
20. Прыжки по хостам с ssh и -J
Если из-за сегментации сети приходится переходить через несколько хостов ssh, чтобы добраться до конечной сети назначения, вам сэкономит время ярлык -J.
localhost:~$ ssh -J host1,host2,host3 [email protected]
Здесь главное понимать, что это не аналогично команде
ssh host1
, затем user@host1:~$ ssh host2
и т. д. Параметр -J хитро использует переадресацию, чтобы localhost устанавливал сеанс со следующим хостом в цепочке. Таким образом, в приведённом выше примере наш localhost аутентифицируется на host4. То есть используются наши ключи localhost, а сеанс от localhost до host4 полностью зашифрован.Для такой возможности в ssh_config
укажите опцию конфигурации ProxyJump. Если регулярно приходится переходить через несколько хостов, то автоматизация через конфиг сэкономит массу времени.
21. Блокировка попыток брутфорса SSH с помощью iptables
Любой, кто управлял сервисом SSH и просматривал логи, знает о количестве попыток брутфорса, которые происходят каждый час каждый день. Быстрый способ уменьшить шум в логах — перенести SSH на нестандартный порт. Внесите изменения в файл
sshd_config
с помощью параметра конфигурации Port##.С помощью iptables
тоже можно легко блокировать попытки подключения к порту по достижении определённого порога. Простой способ сделать это — использовать OSSEC, поскольку он не только блокирует SSH, но выполняет кучу других мер по обнаружению вторжений на базе имени хоста (HIDS).
22. SSH Escape для изменения переадресации портов
И наш последний пример
ssh
предназначен для изменения переадресации портов на лету в рамках существующего сеанса ssh
. Представьте такой сценарий. Вы глубоко в сети; возможно, прыгнули через полдюжины хостов и вам нужен локальный порт на рабочей станции, который перенаправлен на Microsoft SMB старой системы Windows 2003 (кто-нибудь помнит ms08-67?).Нажав enter
, попробуйте ввести в консоли ~C
. Это управляющая последовательность в сессии, позволяющая вносить изменения в существующее соединение.
localhost:~$ ~C
ssh> -h
Commands:
-L[bind_address:]port:host:hostport Request local forward
-R[bind_address:]port:host:hostport Request remote forward
-D[bind_address:]port Request dynamic forward
-KL[bind_address:]port Cancel local forward
-KR[bind_address:]port Cancel remote forward
-KD[bind_address:]port Cancel dynamic forward
ssh> -L 1445:remote-win2k3:445
Forwarding port.
Здесь вы можете увидеть, что мы переадресовали наш локальный порт 1445 на хост Windows 2003, который нашли во внутренней сети. Теперь просто запустите
msfconsole
, и можно идти дальше (предполагая, что вы планируете использовать этот хост).Эти примеры, советы и команды
ssh
должны дать отправную точку; дополнительная информация о каждой из команд и возможностей доступна на справочных страницах (man ssh
, man ssh_config
, man sshd_config
).Меня всегда очаровывала возможность обращаться к системам и выполнять команды в любой точке мира. Развивая свои навыки по работе с инструментами вроде ssh
вы станете более эффективным в любой игре, в какую играете.
habr.com
Бесплатные туннели — SSH Seller
Бесплатные туннели. Качество какое есть.
74.95.30.125|admin|admin|United States|Georgia|Marietta|30090|Valid 4.5.15 17:14
66.223.152.107|admin|admin|United States|Alaska|Anchorage|99502|Valid 4.5.15 17:14
74.113.212.139|admin|admin|United States|Texas|Tyler|75707|Valid 4.5.15 19:13
79.139.108.202|admin|admin|Poland|Podkarpackie|Przemysl|N/A|Valid 12.5.15 21:36
208.50.98.17|admin|admin|United Kingdom|Manchester|Manchester|M40|Valid 12.5.15 21:36
89.141.80.245|admin|admin|Spain|Madrid|Alcal De Henares|28803|Valid 12.5.15 21:36
68.96.149.240|admin|admin|United States|Louisiana|Baton Rouge|70809|Valid 18.5.15 20:54
74.130.83.150|admin|admin|United States|Kentucky|Bowling Green|42104|Valid 18.5.15 20:19
97.68.164.162|admin|admin|United States|Florida|Melbourne|32935|Valid 18.5.15 19:36
66.74.200.49|admin|password|United States|California|Palm Springs|92264|Valid 24.5.15 21:39
71.51.4.41|admin|admin|United States|Virginia|Charlottesville|22903|Valid 24.5.15 20:52
99.75.191.94|admin|password|United States|California|San Diego|92129|Valid 24.5.15 20:51
84.121.92.229|admin|admin|Spain|Murcia|Murcia|30003|Valid 26.5.15 16:16
91.82.232.82|admin|admin|Hungary|N/A|N/A|N/A|Valid 26.5.15 16:16
195.93.169.52|admin|admin|Italy|Veneto|Torricella|45035|Valid 26.5.15 16:16
2.229.79.166|admin|admin|Italy|Emilia-Romagna|Bologna|40100|Valid 26.5.15 16:16
84.122.148.214|admin|admin|Spain|Andalucia|Huelva|21006|Valid 26.5.15 16:16
209.59.72.232|admin|admin|Saint Kitts and Nevis|Saint George Basseterre|Basseterre|N/A|Valid 11.6.15 18:58
190.153.49.85|admin|admin|Venezuela|Distrito Federal|Caracas|N/A|Valid 11.6.15 18:12
67.78.147.171|admin|admin|United States|Florida|Tampa|33619|Valid 11.6.15 18:21
216.75.238.200|admin|admin|United States|California|San Jose|95103|Valid 11.6.15 18:12
173.165.55.171|admin|admin|United States|Illinois|Chicago|60652|Valid 11.6.15 18:12
49.213.45.73|ubnt|ubnt|India|Gujarat|Ahmedabad|380025|Valid 16.7.15 16:10
91.82.233.165|admin|admin|Hungary|Csongrad|Hodmezovasarhely|6811|Valid 16.7.15 16:54
92.39.165.208|admin|password|Austria|Oberosterreich|Braunau|5280|Valid 16.7.15 16:10
24.237.150.169|admin|admin|United States|Alaska|Juneau|99801|Valid 25.8.15 16:48
213.80.110.186|admin|admin|Sweden|Ostergotlands Lan|Linkping|580 05|Valid 25.8.15 17:40
89.96.153.51|admin|admin|Italy|Lombardia|Milan|20122|Valid 25.8.15 16:48
212.46.165.96|admin|admin|Italy|Trentino-Alto Adige|Avelengo|39010|Valid 25.8.15 16:48
111.91.97.206|admin|admin|India|Maharashtra|Thane|400605|Valid 25.8.15 16:48
186.216.251.141|admin|admin|Brazil|Rio Grande do Sul|Guaba|92500|Valid 25.8.15 16:48
sshseller.tk
Как работает SSH и туннели
От редактора AnswIT:
После публикации статьи об использовании SSH в Windows, от друзей-сетевиков возникла куча вопросов. Понадобилось подробное описание принципов работы протокола SSH. Понадобилось понимание того, как устроены и работают ssh-туннели. Вплоть до того, что и куда ходит, как заворачивается трафик, как проходят пакеты по сети.
Друзья попросили написать об этом статью. Но поскольку подобные описания уже существуют, то не было смысла переписывать это ещё раз. Была найдена вот эта отличная статья иженера компании «Белтел» — Сергея Герасимова. При перепечатке она подверглась незначительной редактуре для удобства восприятия, и дополнена моими комментариями.
Эта статья, практически рассказывает об SSH на пальцах.
На её основе я решил сделать эту страницу, чтобы в случае чего ссылаться на неё. Наверняка это в будущем понадобится, поскольку на сайте планируются ещё публикации об SSH и возможностях его применения для разных практических задач.
SSH — это магия, друзья!
Зачем нужен SSH?
Каждый системный администратор или сетевой инженер хоть раз в своей практике сталкивался с ситуацией, когда нужно получить доступ из публичной сети Интернет к ресурсам своей рабочей сети, скрытой за NAT и защищённой фаерволом.
Конечно, для решения этой задачи можно настроить шифрованный site-to-site туннель или PPTP.
Или же воспользоваться сторонним приложением для организации удалённого доступа, например TeamViewer. Однако есть более простое решение, на реализацию которого уйдет буквально одна минута. К тому же, это решение не требует никакого стороннего программного обеспечения, кроме включённого по умолчанию в 90% Linux/Unix дистрибутивов пакета OpenSSH.
Прочитав эту статью, вы узнаете, как, кроме реализации обычного удаленного доступа, вы сможете организовать socks-proxy, публиковать сервис, связать между собой несколько находящихся за NAT ресурсов через метод двойного туннелирования и многое другое.
Как работает SSH-туннелирование
SSH туннель или SSH Port Forwarding, как его называет man(1) ssh – это опциональный функционал протокола, который работает поверх всем знакомой обычной SSH сессии. SSH туннель позволяет послать TCP пакет с одной стороны SSH соединения на другую его сторону и произвести трансляцию IP заголовка по заранее определенному правилу в процессе передачи.
Понять, как работает SSH туннель очень просто: если представить его в виде point-to-point соединения. Так же как и в PPP, любой пакет, попавший в один конец соединения,
будет передан и получен на другом конце туннеля. Дальше, в зависимости от адреса получателя заданного в IP заголовке, пакет будет либо обработан принимающей стороной туннеля (если пакет предназначается непосредственно ей), либо смаршрутизирован дальше в сеть (если адресатом является другой узел сети).
Основное отличие SSH туннеля от PPP соединения в том, что в SSH туннель можно завернуть только TCP трафик. (Примечание: есть несколько хаков, как можно передать UDP через TCP-сокет внутри SSH туннеля, но это решение выходит за рамки данной статьи).
Второе отличие состоит в том, что в point-to-point
соединении входящий трафик может быть инициирован с любой стороны, тогда как для SSH туннеля необходимо явно задать «точку входа» для трафика. «Точка входа» – это параметр вида <адрес>:<порт>,
указывающий какой сокет открыть для входа в туннель (с локальной или удалённой стороны SSH сессии).
Кроме точки входа дополнительно нужно указать правило вида
<адрес>:<порт>, по которому должен
быть переписан заголовок (точнее, адрес и порт назначения) TCP пакета в процессе передачи. Точка входа может задаваться с любого конца туннеля. За этот параметр отвечают ключи –L (local) и –R (remote). Под local
и remote подразумеваются стороны туннеля с точки зрения стороны-оригинатора, то есть того хоста, который устанавливает SSH сессию.
Пока выглядит немного запутанно, поэтому давайте разберём на конкретном примере.
Прямой туннель SSH — обеспечиваем доступ к серверу за NAT
Алекс работает системным администратором в маленькой
компании Qwerty Cakes, занимающейся производством яблочных пирогов. Вся сеть компании находится в
одном броадкаст домене 192.168.0.0/24. Для доступа в интернет используется программный маршрутизатор на базе Linux, адрес которого 192.168.0.1 со стороны сети компании и
1.1.1.1 со стороны сети Интернет. На маршрутизаторе поднят и работает демон OpenSSD, который доступен по сокету
1.1.1.1:22. Внутри сети на сервере с адресом 192.168.0.2 установлен внутренний корпоративный портал, на котором до завтрашнего утра Алексу нужно сделать изменения через Web интерфейс. Однако Алекс не хочет задерживаться на работе допоздна, он хочет получить доступ к порталу из дома со своего домашнего компьютера с адресом
2.2.2.2.
Алекс приходит домой и после ужина устанавливает следующее соединение с маршрутизатором компании:
Что произошло? Алекс установил SSH сессию между адресами 2.2.2.2 и 1.1.1.1, при этом открыв локальную «точку входа» в туннель 127.0.0.1:8080
на своем домашнем компьютере:
alex@Alex-PC:~$ sudo lsof -nPi | grep 8080
ssh 3153 alex 4u IPv4 9862 0t0 TCP 27.0.0.1:8080 (LISTEN)
Любой TCP пакет, который попадёт в сокет 127.0.0.1:8080 со стороны компьютера Алекса, будет отправлен по point-to-point соединению внутри сессии SSH, при этом адрес
назначения в TCP заголовке будет перезаписан с 127.0.0.1 на 192.168.0.2, а порт с 8080 на 80.
Теперь Алексу, чтобы попасть на портал своей компании, нужно всего лишь набрать в браузере:
Как проходят сетевые пакеты внутри SSH-туннеля
Давайте детально разберём, что произошло с TCP пакетом в процессе его прохождения по SSH туннелю:
1. TCP пакет с адресом источника 127.0.0.1 и адресом и портом назначения 127.0.0.1:8080 попал в сокет 127.0.0.1:8080, открытый процессом ssh;
2. Процесс ssh получил пакет, в соответствии с правилом трансляции переписал адрес и порт назначения на 192.168.0.2:80 и отправил его внутри SSH сессии удалённой
стороне 1.1.1.1;
3. Процесс sshd на маршрутизаторе 1.1.1.1 получил пакет и, просмотрев адрес назначения, отправил его хосту 192.168.0.2, переписав при этом адрес источника с 127.0.0.1
на адрес собственного интерфейса 192.168.0.1, для того чтобы получатель, который ничего не знает про существование SSH туннеля, вернул пакет роутеру, а не отправил в свой же localhost 127.0.0.1.
alex@Alex-PC:~$ ssh -L
127.0.0.1:8080:192.0.0.2:80 [email protected]
В данном примере, если бы портал или любой другой ресурс, к которому Алексу нужно получить доступ, находился на самом роутере (например, по адресу 192.168.0.1:80), то команда выглядела бы следующим образом:
alex@Alex-PC:~$ ssh -L 127.0.0.1:8080:192.0.0.1:80 [email protected]
Если сервис доступен по адресу localhost (например, локальный SQL сервер), то и к нему
можно получить доступ:
alex@Alex-PC:~$ ssh -L
127.0.0.1:13306:127.0.0.1:3306 [email protected]
Конструкции вида -L 127.0.0.1:80:127.0.0.1:80 могут выглядеть, на первый взгляд, довольно странными. Но в них нет ничего сложного, если помнить, что решение о
маршрутизации пакета принимается на удалённой стороне туннеля. Нужно помнить основное правило: вторая пара
<адрес>:<порт> обрабатывается удалённой стороной туннеля.
Поэтому пакет с адресом назначения 127.0.0.1 в правиле трансляции будет обработан второй стороной SSH сессии, и никак иначе.
Как вы уже, наверное, догадались, точку входа в туннель можно создавать не только на loopback интерфейсе. Если туннель нужно сделать доступным не только для локального хоста, но и для других участников сети, то в качестве адреса сокета можно указать реальный адрес интерфейса.
alex@Alex-PC:~$ ssh -L
10.0.0.5:8080:192.0.0.2:80 [email protected]
Компьютер Алекса Alex-PC имеет два сетевых интерфейса с адресами 2.2.2.2 и 10.0.0.5. В процессе установления сессии ssh откроет сокет 10.0.0.5:8080 на компьютере Alex-PC. Теперь Алекс может получить доступ к порталу 192.168.0.2:80 со своего ноутбука с адресом 10.0.0.4 и со всей
своей домашней сети 10.0.0.0/24.
Обратный SSH-туннель — выставить свои ресурсы в интернет
Как я уже говорил, точку входа в туннель можно открывать не только со стороны оригинатора ssh сессии, но и с удалённой стороны, то есть с той, к которой мы устанавливаем ssh сессию. Для этого вместо параметра -L используется параметр -R. Для чего это нужно?
Например, для того, чтобы можно было опубликовать локальный сервис для удалённого доступа.
На ноутбуке Алекса запущен Web сервер apache доступный
по адресу 127.0.0.1 с тестовой копией портала компании. Алексу нужно дать доступ к Web серверу своим
коллегам для проведения тестирования интерфейса. Вообще, для подобных целей Алексу неплохо было бы реализовать более надёжную тестовую песочницу. Но так как наш Алекс не более чем виртуальный персонаж этой статьи, он для
демонстрации работы SSH туннеля устанавливает
сессию между своим ноутбуком и маршрутизатором Linux. А с помощью параметра -R открывает порт 8080 на
внутреннем интерфейсе маршрутизатора с адресом 192.168.0.1, который ссылается на сокет 127.0.0.1:80 его тестового Web сервера.
Как видите, на маршрутизаторе процесс sshd открыл локальный сокет 8080
alex@Router:~$
sudo lsof -nPi | grep 8080
sshd
17233 alex 9u IPv4
95930 0t0 TCP 192.168.0.1:8080 (LISTEN)
Давайте посмотрим, что произойдёт с TCP пакетом, отправленным с компьютера 192.168.0.200 в сторону тестового портала, опубликованного на 192.168.0.1:8080:
1. TCP пакет с адресом источника 192.168.0.200 и адресом и портом назначения 192.168.0.1:8080 попадёт в сокет 192.168.0.1:8080, открытый процессом sshd;
2. Процесс sshd, получив пакет, в соответствии с правилом трансляции перепишет адрес и порт назначения с 192.168.0.1:8080 на 127.0.0.1:80 и отправит его внутри SSH сессии стороне-оригинатору 2.2.2.2;
3. Процесс ssh на ноутбуке Алекса, получив пакет и просмотрев адрес его назначения, перепишет адрес отправителя с 192.168.0.200 на адрес своего loopback, и отправит его в локальный сокет 127.0.0.1:80, открытый процессом apache.
Как видите, правила трансляции очень простые. Хост, который открывает сокет для туннеля, занимается трансляцией адреса и порта назначения согласно правилу трансляции. Хост с противоположной стороны туннеля производит подмену адреса и порта источника согласно своей таблице маршрутизации. Таблица маршрутизации необходима, во-первых, для того чтобы отправить пакет в нужную сторону, а, во вторых, для того чтобы произвести
подмену адреса источника на адрес интерфейса, с которого будет отправлен пакет.
Одно важное замечание, которое я оставил на конец статьи.
Если при открытии точки входа в туннель используется localhost вместо адреса реального интерфейса, то его можно опустить, сократив, таким образом, команду с
alex@Alex-PC:~$ ssh -L 127.0.0.1:8080:192.0.0.1:80 [email protected]
до
alex@Alex-PC:~ssh -L
8080:192.0.0.1:80 [email protected]
Эта важная особенность синтаксиса пригодится нам в следующем примере.
Двойное туннелирование
Давайте посмотрим на чуть более сложный пример. Пользователю SQL-Tester, находящемуся за NAT, нужно получить доступ к базе данных на SQL сервере, который тоже находится за NAT. SQL-Tester не может установить
соединение напрямую к серверу, так как в NAT серверной сети нет соответствующих трансляций. Однако от обоих хостов можно установить SSH сессию с промежуточным
сервером 3.3.3.3.
С SQL сервера устанавливаем SSH соединение с сервером 3.3.3.3 и открываем на loopback интерфейсе сервера
3.3.3.3 порт 13306, ссылающийся на локальный сервис SQL, запущенный на локальном сокете 127.0.0.1:3306 SQL сервера:
dbuser@SQL-server:~$ ssh -R 13306:127.0.0.1:3306
[email protected]
Теперь с клиентского хоста SQL-Tester устанавливаем соединение с 3.3.3.3 и открываем порт 3306 на loopback интерфейсе клиента, который, в свою очередь, ссылается на 127.0.0.1:13306 на сервере
3.3.3.3, который… ссылается на 127.0.0.1:3306 на SQL сервере. Всё просто J
tester@SQL-Tester:~$ ssh -L
3306:127.0.0.1:13306 [email protected]
Динамический туннель — SSH как Socks-прокси
В отличие от туннелей с явным указанием правил трансляции, динамический туннель работает совсем по другому принципу. Вместо указания однозначного сопоставления вида адрес:порт для каждого адреса и порта назначения, вы
открываете сокет на локальной стороне SSH сессии, который превращает ваш хост в прокси-сервер, работающий по протоколу SOCKS4/SOCKS5. Давайте разберем
пример:
Создаём сокет динамического туннеля 127.0.0.1:5555 на хосте client внутри сессии SSH к серверу 2.2.2.2
user@client:~$ ssh -D 5555 [email protected]
Проверяем, что порт открыт
user@client:~$ sudo lsof -nPi | grep 5555
ssh
7284 user 7u
IPv4 0x74fcb9e03a5ef5b1 0t0 TCP 127.0.0.1:5555 (LISTEN)
И прописываем прокси в настройках браузера или любого
другого программного обеспечения, поддерживающего SOCKS прокси.
Теперь весь трафик браузера будет идти через SOCKS прокси внутри шифрованного соединения SSH
между хостами 1.1.1.1 и 2.2.2.2.
Как использовать SSH в Microsoft Windows?
Прочитав статью, вы возможно, решите, что все преимущества SSH туннелей доступны только
пользователям Unix-like систем. Однако это не так. Практически все терминальные клиенты для Windows работающие по протоколу SSH имеют поддержку туннелирования.
putty
SecureCRT
С некоторых пор, имеется возможность использовать Windows не только в качестве клиента SSH. Есть возможность установить SSH-сервер на Windows.
В каких случаях использовать SSH-туннели?
Конечно же, для создания постоянных туннелей на боевых серверах нужно использовать специальное программное обеспечение. Но для быстрого решения задачи по пробросу портов, траблшутинга, получения быстрого удалённого доступа да и вообще решения конкретной задачи “здесь и сейчас” зачастую хорошим подспорьем будет использование SSH туннелей.
С их помощью можно выстраивать целые сети, туннели внутри туннелей, комбинировать типы туннелей. Это может позволять быстро получать доступ туда, куда, казалось бы попасть невозможно.
answit.com
SSH-туннели: настройка, использование
SSH-туннелирование — это метод транспортировки произвольных сетевых данных по зашифрованному SSH-соединению. Его можно использовать для добавления шифрования в устаревшие приложения. Он также может использоваться для реализации VPN (виртуальных частных сетей) и доступа к службам интрасети через брандмауэры.
Введение
Перенаправление портов через SSH создает безопасное соединение между локальным компьютером и удаленной машиной, через которую могут быть переданы службы. Поскольку соединение зашифровано, SSH-туннелирование полезно для передачи информации, которая использует незашифрованный протокол, такой как IMAP, VNC или IRC.
SSH-туннель Windows использует порт 22, чтобы обеспечить шифрование данных, передаваемых через общедоступную сеть (например, Интернет), тем самым предоставляя функции VPN. IPsec имеет сквозной транспортный режим, но также может работать в режиме туннелирования через надежный шлюз безопасности.
Определение
Туннель через SSH является стандартом для безопасного удаленного входа в систему и передачи файлов по ненадежным сетям. Он также обеспечивает способ защиты трафика данных любого конкретного приложения с использованием переадресации портов, в основном туннелирования любого порта TCP/IP через SSH. Это означает, что трафик направлен на поток внутри зашифрованного SSH-соединения, чтобы он не мог прослушиваться или перехватываться, пока находится в пути. SSH-туннелирование позволяет добавить сетевую безопасность к устаревшим приложениям, которые не поддерживают шифрование.
Безопасное соединение по ненадежной сети устанавливается между клиентом SSH и SSH-сервером. Это SSH-соединение зашифровывается, защищает конфиденциальность и целостность и аутентифицирует связующие стороны.
Соединение SSH используется приложением для подключения к серверу приложений. При активированном туннелировании приложение связывается с портом на локальном хосте, который слушает клиент SSH. Затем клиент SSH перенаправляет приложение поверх своего зашифрованного туннеля на сервер. Последний подключается к фактическому серверу приложений — обычно на том же компьютере или в том же центре обработки данных, что и сервер SSH. Таким образом, связь приложения защищена без необходимости изменения рабочих процессов приложений или конечных пользователей.
Протоколы туннелирования — что это?
В компьютерных сетях протокол туннелирования позволяет сетевому пользователю получать доступ или предоставлять сетевую услугу, которую базовая сеть не поддерживает или не обеспечивает напрямую. Одним из важных применений является разрешение внешнего протокола на работу в сети, которая не поддерживает этот конкретный протокол (например, запуск IPv6 по протоколу IPv4).
Еще один важный момент заключается в предоставлении услуг, которые нецелесообразны или небезопасны для использования с применением только базовых сетевых услуг. Например, предоставление корпоративного сетевого адреса удаленному пользователю, физический сетевой адрес которого не является частью корпоративной сети. Поскольку туннелирование включает переупаковку данных трафика в другую форму, возможно, с использованием стандартного шифрования, важная особенность заключается в том, чтобы скрыть характер трафика, который запускается через туннели.
Secure Shell — безопасная передача данных
Secure Shell состоит из зашифрованного туннеля, созданного через соединение протокола SSH. Пользователи могут настроить туннели SSH для передачи незашифрованного трафика по сети через зашифрованный канал. Например, компьютеры Microsoft Windows могут обмениваться файлами с использованием протокола сервера сообщений (SMB), незашифрованного протокола.
Если вы хотите удаленно подключить файловую систему Microsoft Windows через Интернет, кто-то, следящий за соединением, может видеть переданные файлы. Чтобы безопасно подключить файловую систему Windows, можно установить туннель SSH, который направляет весь SMB-трафик на удаленный файловый сервер через зашифрованный канал. Несмотря на то что сам протокол SMB не содержит шифрования, зашифрованный SSH-канал, через который он перемещается, обеспечивает безопасность.
Типы переадресации портов
Переадресация портов — это широко поддерживаемая функция, обнаруживаемая во всех основных клиентах и серверах SSH. С функцией перенаправления портов SSH можно осуществлять передачу различных типов интернет-трафика через сеть. Это используется для того, чтобы избежать сетевой слежки или с целью обхода неправильно настроенных маршрутизаторов в Интернете.
Существует три типа переадресации портов с SSH:
локальная — соединения с SSH-клиента перенаправляются на SSH-сервер, а затем на целевой сервер;
удаленная — соединения с SSH-сервера перенаправляются через SSH-клиент, а затем на целевой сервер;
динамическая — соединения из различных программ пересылаются через SSH-клиент, затем через SSH-сервер и, наконец, на несколько целевых серверов.
Локальная переадресация портов является наиболее распространенным типом и, в частности, позволяет обойти брандмауэр компании, который блокирует «Википедию».
Удаленная переадресация портов встречается реже. Позволяет подключиться с вашего SSH-сервера к компьютеру в интрасети вашей компании.
Динамическая переадресация портов используется также нечасто. Позволяет обойти брандмауэр компании, который полностью блокирует доступ к Интернету. Требует много работы для настройки, и обычно проще использовать локальную переадресацию портов для определенных сайтов, к которым вы хотите получить доступ.
Технические особенности
Чтобы использовать переадресацию портов, вам необходимо убедиться, что перенаправление портов включено на вашем сервере. Вы также должны указать своему клиенту номера портов источника и назначения. Если вы используете локальную или удаленную переадресацию, вам нужно сообщить клиенту конечный сервер. Если применяется динамическая переадресация портов, потребуется настроить свои программы на использование прокси-сервера SOCKS. Опять же, то, как это сделать, зависит от того, какой клиент SSH вы используете, поэтому может потребоваться более детально ознакомиться с документацией.
Примеры реализации
Лучший способ понять, как это работает — рассмотреть пример с локальной переадресацией. Представьте, что вы находитесь в частной сети, которая не позволяет подключаться к определенному серверу. Предположим, вы на работе, и vk.com заблокирован. Чтобы обойти блокировку, мы можем создать туннель через сервер, который не находится в нашей сети и, таким образом, может получить доступ к требуемому ресурсу: $ ssh -L 9000: vk.com: 80 [email protected].
Ключевым моментом здесь является -L, в котором говорится, что мы выполняем локальную переадресацию портов. Затем команда сообщает, что мы пересылаем наш локальный порт 9000 на vk.com:80, который является портом по умолчанию для HTTP. Теперь необходимо открыть свой браузер и перейти по адресу http://localhost: 9000.
Неоспоримое преимущество SSH-туннелей заключается в том, что они зашифрованы. Никто не увидит, какие сайты вы посещаете — будут видны только SSH-соединения с сервером.
Подключение к базе данных за брандмауэром
Еще один хороший пример: если вам нужно получить доступ к порту на вашем сервере, к которому это можно сделать только с локального хоста, а не удаленно.
Примером здесь является необходимость подключения к консоли базы данных, которая позволяет только локальное подключение по соображениям безопасности. Допустим, вы используете PostgreSQL на своем сервере, который по умолчанию прослушивает порт 5432: $ ssh -L 9000: localhost: 5432 [email protected].
Часть, которая здесь изменилась, — localhost: 5432, в которой говорится о переадресации соединений с вашего локального порта 9000 на localhost: 5432 и на ваш сервер. Теперь мы можем просто подключиться к нашей базе данных: $ psql -h localhost -p 9000.
Удаленная переадресация портов
Теперь объясним на реальном примере работу удаленной переадресации. Допустим, вы разрабатываете приложение Rails на своей локальной машине, и хотите показать его другу. К сожалению, ваш интернет-провайдер не предоставил вам публичный IP-адрес, поэтому невозможно напрямую подключиться к ПК через Интернет.
Иногда это можно решить, настроив NAT (трансляция сетевых адресов) на вашем маршрутизаторе, но это не всегда работает, и для этого требуется изменить конфигурацию вашего маршрутизатора, что не всегда желательно. Это решение также не работает, если у вас нет доступа администратора в вашей сети.
Чтобы устранить эту проблему, понадобится другой компьютер, который является общедоступным и имеет доступ к SSH. Это может быть любой сервер в Интернете, если вы можете подключиться к нему. Мы создадим SSH-туннель, который откроет новый порт на сервере и подключит его к локальному порту на вашем компьютере:
$ ssh-R 9000: localhost: 3000 [email protected]
Синтаксис здесь очень похож на локальную переадресацию портов, с одной заменой -L на -R. Но, как и при локальной переадресации портов, синтаксис остается неизменным.
Сфера применения и риски
Недостатком является то, что любой пользователь, который может войти на сервер, вправе включить переадресацию портов. Это широко используется внутренними ИТ-специалистами для входа в свои домашние машины или серверы в облаке, пересылки порта с сервера обратно в корпоративную интрасеть на их рабочий компьютер или подходящий сервер. Хакеры и вредоносное ПО также могут использовать его, чтобы оставить дефект алгоритма во внутренней сети. Его также можно использовать для сокрытия треков атакующих, путем атаки с помощью нескольких устройств, которые допускают неконтролируемое туннелирование.
Туннелирование часто используется вместе с ключами PHP SSH-туннеля и аутентификацией открытого ключа для полной автоматизации процесса.
Преимущества
Продажа SSH-туннелей широко используются во многих корпоративных средах, которые используют системы мейнфреймов в качестве своих приложений. В этих средах сами приложения могут иметь очень ограниченную поддержку для обеспечения безопасности. Используя туннелирование, совместимость с SOX, HIPAA, PCI-DSS и другими стандартами, может быть достигнута без необходимости изменения приложений.
Во многих случаях эти приложения и серверы приложений таковы, что внесение изменений в них, вероятно, окажется непрактичным или чрезмерно дорогостоящим. Исходный код может быть недоступен, продавец, возможно, обанкротился, продукт может оказаться вне поддержки или отсутствует команда разработчиков. Добавление защитной оболочки, такой как SSH-туннель putty, обеспечивает экономичный и практичный способ добавления безопасности для таких приложений. Например, все сети банкоматов нашей страны работают с использованием туннелирования для обеспечения безопасности.
Риски
В качестве полезной вещи, несомненно, выступает SSH-туннелирование. Оно включает риски, которые необходимо решать корпоративным ИТ-отделам безопасности. Соединения бесплатных SSH-туннелей защищены сильным шифрованием. Это делает их содержимое невидимым для большинства развертываемых решений сетевого мониторинга и фильтрации трафика. Эта невидимость несет значительный риск, если она используется для вредоносных целей, таких как фильтрация данных.
Киберпреступники или вредоносное ПО могут использовать брут SSH-туннелей для скрытия своих несанкционированных сообщений или для извлечения похищенных данных из целевой сети.
В SSH-туннельной атаке злоумышленник устанавливает сервер за пределами целевой сети (например, в Amazon AWS). Как только мошенник оказывается в целевой системе, он подключается к внешнему серверу SSH изнутри. Большинство организаций разрешают исходящие соединения в SSH-туннеле Linux, по крайней мере, если они имеют серверы в общедоступном облаке. Это SSH-соединение настроено с опцией, которая позволяет производить пересылку TCP-порта из порта на внешнем сервере в SSH-порт на сервере во внутренней сети. Для настройки этого туннеля SSH требуется одна однострочная команда внутри, и ее можно легко автоматизировать. Большинство брандмауэров практически не защищают от него.
fb.ru