- ИТ База знаний
- Полезно
- Навигация
- Серверные решения
- Телефония
- Корпоративные сети
- Про SSH port forwarding в Linux
- Что такое переброс порта SSH?
- Для чего нужен переброс порта SSH?
- Сколько сессий можно устанавливать?
- Переброс локального порта
- Тестирование работы переадресованного порта
- Создание постоянного туннеля (Autossh)
- Переброс удалённого порта
- Динамическая переадресация портов
- Множественная переадресация
- Просмотр списка туннелей
- Ограничение переадресации портов
- Уменьшение задержки
- Проброс портов в Linux
- Что такое проброс портов в Linux
- Как сделать проброс портов в Ubuntu
- С помощью маршрутизатора
- С помощью установки Hamachi в Ubuntu
- С помощью Squid
- С помощью Iptables
- Распространенные ошибки
- Заключение
ИТ База знаний
Курс по Asterisk
Полезно
— Узнать IP — адрес компьютера в интернете
— Онлайн генератор устойчивых паролей
— Онлайн калькулятор подсетей
— Калькулятор инсталляции IP — АТС Asterisk
— Руководство администратора FreePBX на русском языке
— Руководство администратора Cisco UCM/CME на русском языке
— Руководство администратора по Linux/Unix
Навигация
Серверные решения
Телефония
FreePBX и Asterisk
Настройка программных телефонов
Корпоративные сети
Протоколы и стандарты
Про SSH port forwarding в Linux
SSH туннели один из самых часто используемых методов связи среди системных и сетевых администраторов. В данном руководстве расскажем о такой функции как переброс порта SSH. Это используется для безопасной передачи данных между двумя и более системами.
Онлайн курс по Linux
Мы собрали концентрат самых востребованных знаний, которые позволят тебе начать карьеру администратора Linux, расширить текущие знания и сделать уверенный шаг к DevOps
Что такое переброс порта SSH?
Коротко, переброс порта SSH даёт возможность создавать туннель между несколькими системами, а затем настроить эти системы так, чтобы трафик они гнали через этот туннель. Именно по такой логике работает VPN или SOCKS Proxy.
Есть несколько разных методов переброса: переброс локального порта, переброс удалённого порта или динамический переброс. Для начала дадим пояснение каждому из них.
- Локальный переброс порта позволяет получать доступ ко внешним ресурсам из локальной сети и работать в удаленной системе, как если бы они находились в одной локальной сети. По такому принципу работает Remote Access VPN.
- Переброс удаленного порта дает возможность удалённой системе получать доступ к вашей локальной сети.
- Динамический переброс создает SOCKS прокси сервер. После этого настраиваем приложения так, чтобы они использовали это туннель для передачи данных. Чаще всего такой переброс используется для доступа к ресурсам, который по той или иной причине заблокированы для данной страны.
Для чего нужен переброс порта SSH?
Допустим у вас есть какое-то приложение, которые передаёт данные в открытом виде или через нешифрованный протокол. Ввиду того, что SSH создает шифрованное соединение, то вы с легкостью можете настроить программу так, чтобы трафик её шёл через этот туннель.
Он так же часто используется для доступа к внутренним ресурсам извне. Приблизительно это напоминает Site-to-Site VPN, где нужно указывать какой именно трафик нужно заворачивать в туннель.
Сколько сессий можно устанавливать?
Теоретически, можно создавать столько сессий, сколько нам захочется. В сети используется 65 535 различных портов, и мы можем перебрасывать любой из этих портов.
Но при перебросе порта нужно учитывать, что некоторые из них зарезервированы за конкретными сервисами. Например, HTTP использует 80 порт. Значит, переброс на порт 80 возможен только если нужно переадресовать веб трафик.
Порт, который перебрасывается на локальном хосте может не совпадать с портом удаленной системы. Мы легко можем перебросить локальный порт 8080 на порт 80 на удаленной машине. Иными словами, если мы напишем IP адрес нашей машины и порт 8080, то запрос пойдет на 80 порт удалённой системы.
Если вам не критично какой порт использовать на своем хосте, лучше выбрать что-то из диапазона 2000-10000, так как все порты ниже 2000 зарезервированы.
Переброс локального порта
Локальная пересылка представляет собой переброс порта из клиентской системы на сервер. Он позволяет настроить порт в системе таким образом, чтобы все соединения на этот порт проходили через туннель SSH.
Для переадресации локального порта используется ключ L. Общий синтаксис команды таков:
Данной командой мы говорим системе, что все запросы на 8080 порт example1.com переадресовывать на example2.com. Это часто используется когда нужно организовать доступ извне на внутренний ресурсы компании.
Тестирование работы переадресованного порта
Чтобы проверить, работает ли переадресация должным образом можно воспользоваться утилитой netcat. На машине, где была запущена команда переадресации нужно ввести команду netcat в следующем виде:
Если переадресация работает и трафик проходит, то утилита вернёт «Успех!». В противном случае выдаст ошибку об истечении времени ожидания.
Если что-то не работает, нужно убедиться, что подключение к удаленному порту по SSH работает корректно и запросы не блокируются межсетевым экраном.
Создание постоянного туннеля (Autossh)
Для создания туннеля, который будет активен постоянно используется так называемая утилита Autossh. Единственно требование это необходимость настройки между двумя системами аутентификацию по публичным ключам, чтобы не получать запросы на ввод пароля при каждом обрыве и восстановлении соединения.
По умолчанию, Autossh не установлен. Чтобы установить эту утилиту введем команду ниже.
Синтаксис утилиты autossh почти похож на синтаксис ssh:
Переброс удалённого порта
Переброс порта с удалённой машины используется в тех случаях, если нужно предоставить доступ на свой хост. Допусти у нас установлен веб сервер и нам нужно, чтобы друзья могли пользоваться им. Для этого нужно ввести команду показанную ниже:
А общий синтаксис команды выглядит так:
Динамическая переадресация портов
Динамическая переадресация портов позволит ssh функционировать как прокси-сервер. Вместо переброса трафика на специфический порт, здесь трафик будет идти через на диапазон портов.
Если вы когда-нибудь пользовались прокси сервером для посещения заблокированного сайта или просмотра контента, недоступного в вашем регионе, вероятнее всего вы пользовались SOCKS сервером.
Динамическая переадресация также обеспечивает некоторую приватность. Она затрудняет логирование и анализ трафика, так как трафик проходит через промежуточный сервер. Для настройки динамической переадресации используется следующая команда:
Таким образом, если нужно весь трафик идущий на порт 1234 направить на SSH сервер, нужно ввести команду:
После установления соединения, мы можем указать в приложениях, например, браузере, пропускать трафик через туннель.
Множественная переадресация
Иногда приходится перебрасывать несколько внутренних портов на несколько внешних. Допустим у нас на одном и том же сервере крутятся и веб сервер и oracale. В таком случае мы можем указать несколько условий переадресации ставя перед каждым из них ключ L для локальной переадресации и R для внешней.
Просмотр списка туннелей
Чтобы просмотреть сколько SSH туннелей активны на данный момент можно прибегнуть к помощи команды lsof:
Как видим, на нашей системе сейчас активно три подключения. Чтобы вместо имени хоста показать IP адрес к команде нужно добавить ключ n.
Ограничение переадресации портов
По умолчанию, переброс портов SSH активен для всех. Но если нужно ограничить переадресацию портов в целях безопасности, то нужно отредактировать файл sshd_config.
$ sudo vi /etc/ssh/sshd_config
Здесь есть несколько опций, позволяющих ограничивать создание SSH туннелей.
PermitOpen позволяет прописать адреса, для которых можно включить переадресацию портов. Тут можно указать конкретный IP адреса или название хоста:
AllowTCPForwarding данная опция включает или отключает переадресацию портов для SSH. Так же можно указать какой тип переадресации допускается на этом хосте.
Для подробной информации можно вызвать руководство по файлу sshd_config:
Уменьшение задержки
Проблема с переадресацией портов на SSH это возможность увеличения задержки. При работе с текстовой информацией э то не критично. Проблема даёт о себе знать если по сети идёт много трафика, а SSH сервер настрое как SOCKS сервер, то есть на нём настроена динамический переброс портов.
Это происходит по той причине, что SSH туннели по сути это TCP туннель поверх TCP. Это не очень эффективный метод передачи данных.
Для решения проблемы можно настроить VPN, но если по какой-то причине предпочитаете SSH туннели, то существует программа sshuttle, которая устраняет проблему. На Ubuntu или других дистрибутивах семейства Debian программу можно установить командой
Если же программы нет в репозиториях дистрибутива, то можно взять ее с GitHub:
Настройка туннеля в sshuttle отличается от SSH. Чтобы завернуть весь трафик в туннель нужно ввести следующую команду:
Прервать соединение можно комбинацией клавиш Ctrl+C. Чтобы запустить sshuttle как демон, нужно добавить ключ D.
Чтобы убедиться что туннель поднят и в глобальной сети показывается другой IP, в терминале можно ввести команду:
Или же просто открыть любой другой сайт, который покажет белый IP и местоположение.
Онлайн курс по Linux
Мы собрали концентрат самых востребованных знаний, которые позволят тебе начать карьеру администратора Linux, расширить текущие знания и сделать уверенный шаг к DevOps
Источник
Проброс портов в Linux
Система Убунту является самой оптимальной ОС для работы не только крупных производств, но и частных отдельных лиц. Однако если с одного гаджета работает несколько человек, это может стать причиной многих проблем, связанных с работой Линукс. Для решения этой проблемы есть такое явление, как проброс портов в Ubuntu. Этот процесс имеет свои преимущества и недостатки. Также для него характерны некоторые специфические нюансы и методики решения проблем у новичков в области IT-технологии.
Что такое проброс портов в Linux
Сначала нужно разобраться в сути явления проброса портов Linux. Эта техника необходима в том случае, когда запрашивающих портов гораздо больше, чем места на искомом устройстве. В этом случае для связи пользователя и сервиса нужна особая связь через «посредника».
В целом проброс портов debain или иными словами, настройка rinetd, осуществляется с помощью общей программы NAT.
Работа передачи данных достаточно проста и понятна: компьютер или ноутбук имеет свой уникальный адрес. Когда с помощью него нужно передать какие-то программы или документы, идет запрос к роутеру, а тот меняет адрес компьютера на уникальный адрес сервера. Таким образом, устанавливается связь пользователя с сервером. Обратный ответ получается аналогично через роутер. Чтобы можно было устанавливать свои адреса для роутера, было создано перенаправление портов Ubuntu.
Ubuntu port forwarding имеет несколько этапов работы:
- Переадресация трафика на ядерном уровне. Это происходит с помощью выражения echo 1 | sudo tee /proc/sys/net/ipv4/ip_forward . Чтобы это состояние и возможные изменения смогли сохраниться после перезагрузки оборудования, нужно ввести команду sudo sysctl –w net.ipvip_forward=1.
- Настройка прохождения пакетов. Чтобы новые пакеты беспрепятственно приходили на определенный порт, следует ввести выражение sudo iptables — A FORWARD -i eth0 -o eth1 -p tcp —syn —dport 80 -m conntrack —ctstate NEW -j ACCEP T . Для разрешения прохода другого трафика нужно ввести команду sudo iptables -A FORWARD -i eth0 -o eth1 -m conntrack —ctstate ESTABLISHED,RELATED -j ACCEPT . Чтобы процесс хорошо проходил в обоих направлениях, нужно ввести запись $ sudo iptables -A FORWARD -i eth1 -o eth0 -m conntrack —ctstate ESTABLISHED,RELATED -j ACCEPT . По умолчанию поставить режим DROP: sudo iptables -P FORWARD DROP .
- Модификация пакетов. В этом случае создаются определенные правила работы системы с пакетами. Чтобы осуществлялось перенаправление документов только на один порт, нужна команда: sudo iptables -t nat -A PREROUTING -i eth0 -p tcp —dport 80 -j DNAT —to-destination168.1.2 . Можно настроить получение пакетов на маршрутизатор: sudo iptables -t nat -A POSTROUTING -o eth1 -p tcp —dport 80 -d 192.168.1.2 -j SNAT —to-source 192.168.1.1 . Для установки еще одного порта: sudo iptables -t nat -A POSTROUTING -o eth1 -p tcp —dport 80 -d 192.168.1.2 -j SNAT —to-source 192.168.1.1:8080 . Для указания возможного диапазона: sudo iptables -t nat -A POSTROUTING -o eth1 -p tcp —dport 1000:2000 -d 192.168.1.2 -j SNAT —to-source 192.168.1.1
- Сохранение настроек. Это делается просто, одной записью: sudo service iptables-persistent save .
Технология Ubuntu port forwarding достаточна проста.
Как сделать проброс портов в Ubuntu
Проброс портов в Ubuntu server может происходить разными путями. Причем у каждого метода есть своя специфическая методика.
С помощью маршрутизатора
Пусть есть конкретная ситуация:
$EXT_IP – внешний, реальный IP-адрес шлюза
$INT_IP – внутренний IP-адрес шлюза, в локальной сети
$LAN_IP – внутренний IP-адрес сервера, предоставляющего службы внешнему миру
$SRV_PORT – порт службы. Для веб-сервера равен 80, для SMTP – 25 и т. д.
eth0- внешний интерфейс шлюза. Именно ему присвоен сетевой адрес $EXT_IP
eth1 – внутренний интерфейс шлюза, с адресом $INT_IP
А для облегчения понимания, в таких блоках рассмотрены конкретные ситуации:
1.2.3.4 – внешний адрес шлюза
192.168.0.1 – внутренний адрес шлюза
В локальной сети работает веб-сервер (порт 80) для сайта webname.dom
192.168.0.22 – внутренний адрес веб-сервера
Тогда методика проведения проброса портов будет выглядеть следующим образом:
- Маршрутизация: установка параметров маршрутизатора iptables -t nat -A PREROUTING —dst2.3.4 -p tcp —dport 80 -j DNAT —to-destination 192.168.0.22 и установка процесса iptables -I FORWARD 1 -i eth0 -o eth1 -d 192.168.0.22 -p tcp -m tcp —dport 80 -j ACCEPT .
- Для разрешения доступа других пользователей с другими адресами: iptables -t nat -A POSTROUTING —dst168.0.22 -p tcp —dport 80 -j SNAT —to-source 192.168.0.1.
- Для предотвращения переадресации к маршрутизатору: iptables -t nat -A OUTPUT —dst2.3.4 -p tcp —dport 80 -j DNAT —to-destination 192.168.0.22.
Для автоматического запуска изучаемого процесса можно создать скрипт.
И дальнейшее обращение к пробросу будет выполняться пользователем записью в командной строке: ./script.sh 192.168.0.56 20,21.
С помощью установки Hamachi в Ubuntu
Технология немного отличается от предыдущего варианта:
- Скачивание, загрузка и «сборка» необходимого пакета программы: wgethttps: //secure.logmein.com/labs/logmein-hamachi_2.1.0.119-1_amd64.deb; sudo apt-get install lsb; dpkg -i logmein-hamachi_2.1.0.119-1_amd64.deb.
- Запуск программы, наименование гаджета и подключение к сети: service logmein-hamachi start hamachi login; hamachi set-nick $NAME; hamachi join $NAME_NETWORK.
- Выбор необходимой сети: hamachi list.
- Далее следует изменить настройки: sudo apt-get install rinetd; nano /etc/rinetd.conf; IP_in port_in IP_out port_out.
- Перезапустить службу: service rinetd restart.
- Выключить менеджер задач: sudo ufw disable.
Осталось только перезагрузить систему.
С помощью Squid
Он используется для контроля слишком большого трафика.
Алгоритм также прост:
- Установка: sudo apt-get install squid3.
- Настройка: /etc/squid/squid.conf.
Затем действия идут такие же, как и в предыдущем варианте.
С помощью Iptables
Такая программа аналогична первому варианту. Собственно алгоритм будет такой же:
- Маршрутизация: установка параметров маршрутизатора iptables -t nat -A PREROUTING —dst2.3.4 -p tcp —dport 80 -j DNAT —to-destination 192.168.0.22 и установка процесса iptables -I FORWARD 1 -i eth0 -o eth1 -d 192.168.0.22 -p tcp -m tcp —dport 80 -j ACCEPT.
- Для разрешения доступа других пользователей с другими адресами: iptables -t nat -A POSTROUTING —dst168.0.22 -p tcp —dport 80 -j SNAT —to-source 192.168.0.1.
- Для предотвращения переадресации к маршрутизатору: iptables -t nat -A OUTPUT —dst2.3.4 -p tcp —dport 80 -j DNAT —to-destination 192.168.0.22.
Для автоматического запуска изучаемого процесса можно создать скрипт.
И дальнейшее обращение к пробросу будет делаться пользователем записью в командной строке: ./script.sh 192.168.0.56 20,21.
Распространенные ошибки
Самая важная проблема и часто возникающая ошибка у начинающих пользователей – открытые порты. Они являются гарантом небезопасного нахождения в виртуальном пространстве. Для решения этой проблемы существуют различные программные обеспечения.
Заключение
Проброс портов в Ubuntu – очень важный процесс в комфортной работе с различными данными компьютера. Однако надо точно выполнять различные методики, иначе могут трудноразрешимые проблемы.
Источник