О доступе к сайту на локалхост извне

Настройка, программирование, распределённые вычисления

Модераторы: Olej, bellic, vikos

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: О доступе к сайту на локалхост извне

Непрочитанное сообщение Olej » 15 янв 2020, 17:01

Olej писал(а):
07 янв 2020, 18:41
Вот так:

Код: Выделить всё

olej@ACER:~$ ngrok http 80
Как быстрый (по развёртыванию) способ предоставить временный доступ (на пару часов) к локальному ресурсу (форуму) такой способ, пожалуй, самый заманчивый. Работает безотказно...

Как способ создать более долгосрочный канал - более предпочтительным будет способ организовать обратный туннель SSH, используя для этого промежуточный хост с "белым" IP ... в качестве которого для экспериментов вполне удобно использовать наш собственный VDS сервер хостинга основного, сетевого форума.
Чем я и займусь на досуге...

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: О доступе к сайту на локалхост извне

Непрочитанное сообщение Olej » 15 янв 2020, 18:11

Olej писал(а):
15 янв 2020, 17:01
Как способ создать более долгосрочный канал - более предпочтительным будет способ организовать обратный туннель SSH, используя для этого промежуточный хост с "белым" IP ... в качестве которого для экспериментов вполне удобно использовать наш собственный VDS сервер хостинга основного, сетевого форума.
Чем я и займусь на досуге...
Вообще то, для этих дел описываются несколько отличающихся в деталях способов. Я воспользуюсь простейшим из них...

1. Разрешаю для SSH форвардинг TCP не только с локального, но и с гостевых IP, правка GatewayPorts в /etc/ssh/sshd_config:

Код: Выделить всё

olej@277938:/etc/ssh$ cat /etc/ssh/sshd_config | grep GatewayPorts
#GatewayPorts no
GatewayPorts clientspecified
Перезапуск демона SSH:

Код: Выделить всё

olej@277938:/etc/ssh$ sudo systemctl restart ssh


olej@277938:/etc/ssh$ sudo systemctl status ssh
● ssh.service - OpenBSD Secure Shell server
   Loaded: loaded (/lib/systemd/system/ssh.service; enabled; vendor preset: enabled)
   Active: active (running) since Wed 2020-01-15 17:50:32 MSK; 9s ago
     Docs: man:sshd(8)
           man:sshd_config(5)
  Process: 21584 ExecStartPre=/usr/sbin/sshd -t (code=exited, status=0/SUCCESS)
 Main PID: 21585 (sshd)
    Tasks: 5 (limit: 544)
   Memory: 17.2M
   CGroup: /system.slice/ssh.service
           ├─21559 sshd: unknown [priv]
           ├─21560 sshd: unknown [net]
           ├─21567 sshd: unknown [priv]
           ├─21568 sshd: unknown [net]
           └─21585 /usr/sbin/sshd -D
           
янв 15 17:50:32 277938.local systemd[1]: This usually indicates unclean termination of a previous run, or service implementation deficiencies.
янв 15 17:50:32 277938.local systemd[1]: ssh.service: Found left-over process 21560 (sshd) in control group while starting unit. Ignoring.
янв 15 17:50:32 277938.local systemd[1]: This usually indicates unclean termination of a previous run, or service implementation deficiencies.
янв 15 17:50:32 277938.local systemd[1]: ssh.service: Found left-over process 21567 (sshd) in control group while starting unit. Ignoring.
янв 15 17:50:32 277938.local systemd[1]: This usually indicates unclean termination of a previous run, or service implementation deficiencies.
янв 15 17:50:32 277938.local systemd[1]: ssh.service: Found left-over process 21568 (sshd) in control group while starting unit. Ignoring.
янв 15 17:50:32 277938.local systemd[1]: This usually indicates unclean termination of a previous run, or service implementation deficiencies.
янв 15 17:50:32 277938.local sshd[21585]: Server listening on 0.0.0.0 port 22.
янв 15 17:50:32 277938.local sshd[21585]: Server listening on :: port 22.
янв 15 17:50:32 277938.local systemd[1]: Started OpenBSD Secure Shell server.
2. Инициализирую реверсный туннель SSH, из локального компьютера делаю:

Код: Выделить всё

olej@ACER:~/2020_WORK/rus.linux.net.hist$ ssh -fN -R 185.178.47.95:8080:localhost:80 olej@185.178.47.95
olej@185.178.47.95's password:
Это должно создать реверсный канал с порта 8080 сервера хостера на порт 80 локального компьютера где работает форум.

3. Проверяю на сервере хостера что это состоялось:

Код: Выделить всё

olej@277938:/etc/ssh$ sudo netstat -nap | grep 8080
tcp        0      0 185.178.47.95:8080      0.0.0.0:*               LISTEN      21669/sshd: olej

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: О доступе к сайту на локалхост извне

Непрочитанное сообщение Olej » 15 янв 2020, 18:14

Olej писал(а):
15 янв 2020, 18:11
Это должно создать реверсный канал с порта 8080 сервера хостера на порт 80 локального компьютера где работает форум.
Но этого мало!
На сервере хостера работает файервол, управляющий парвилами iptables:

Код: Выделить всё

root@277938:/etc/ssh# ufw status numbered
Status: active

     To                         Action      From
     --                         ------      ----
[ 1] OpenSSH                    ALLOW IN    Anywhere
[ 2] WWW Full                   ALLOW IN    Anywhere
[ 3] SMTP                       ALLOW OUT   Anywhere                   (out)
[ 4] 6666                       ALLOW IN    Anywhere
[ 5] 6665                       ALLOW IN    Anywhere

4. Нужно разрешить порт доступа снаружи через туннель (8080):

Код: Выделить всё

root@277938:/etc/ssh# ufw allow 8080
Rule added

Код: Выделить всё

root@277938:/etc/ssh# ufw status numbered
Status: active

     To                         Action      From
     --                         ------      ----
[ 1] OpenSSH                    ALLOW IN    Anywhere
[ 2] WWW Full                   ALLOW IN    Anywhere
[ 3] SMTP                       ALLOW OUT   Anywhere                   (out)
[ 4] 6666                       ALLOW IN    Anywhere
[ 5] 6665                       ALLOW IN    Anywhere
[ 6] 8080                       ALLOW IN    Anywhere

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: О доступе к сайту на локалхост извне

Непрочитанное сообщение Olej » 15 янв 2020, 18:36

Olej писал(а):
07 янв 2020, 18:41
И подключаемся к форуму по внешнему URL - http://bca98d9b.ngrok.io/:
loc4.png
Теперь к тому же локальному форуму можно подключиться из внешнего Интернет по совсем другому URL - http://linux-ru.ru:8080/:
loc5.png
И вот он же, как выглядит в браузере не выходя в сеть вообще, по петлевому адресу:
loc6.png
Везде отчётливо на картинках видна (разная) адресная строка (доступа к одному и тому же ресурсу).

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: О доступе к сайту на локалхост извне

Непрочитанное сообщение Olej » 15 янв 2020, 18:50

Olej писал(а):
15 янв 2020, 18:11
2. Инициализирую реверсный туннель SSH, из локального компьютера делаю:
Ещё есть такой хороший вопрос ... который гораздо менее освещён в публикациях - как удалить созданный ранее туннель после его использования, когда уже не нужен?

Код: Выделить всё

root@277938:/etc/ssh# netstat -pnlt | grep :8080
tcp        0      0 185.178.47.95:8080      0.0.0.0:*               LISTEN      21669/sshd: olej

root@277938:/etc/ssh# ps aux | grep 21669
olej     21669  0.0  0.2  17004  1236 ?        S    17:55   0:00 sshd: olej
root     22996  0.0  0.1   6400   600 pts/5    S+   18:44   0:00 grep 21669

root@277938:/etc/ssh# kill -9 21669

root@277938:/etc/ssh# netstat -pnlt | grep :8080
И вот теперь при обращении по URL http://linux-ru.ru:8080/ - получим ошибку: ERR_CONNECTION_REFUSED

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: О доступе к сайту на локалхост извне

Непрочитанное сообщение Olej » 15 янв 2020, 20:59

Olej писал(а):
15 янв 2020, 18:50
Ещё есть такой хороший вопрос ... который гораздо менее освещён в публикациях - как удалить созданный ранее туннель после его использования, когда уже не нужен?
Ещё раз устанавливаю туннель...

На localhost:

Код: Выделить всё

olej@ACER:~/2020_WORK/rus.linux.net.hist/local$ ssh -fN -R 185.178.47.95:8080:localhost:80 olej@185.178.47.95
olej@185.178.47.95's password: 
На сервере (185.178.47.95) проверяю:

Код: Выделить всё

root@277938:~# netstat -pnlt | grep :8080
tcp        0      0 185.178.47.95:8080      0.0.0.0:*               LISTEN      25727/sshd: olej    
Или так:

Код: Выделить всё

root@277938:~# lsof -nPi | grep 8080
sshd     25727        olej   10u  IPv4 2284469      0t0  TCP 185.178.47.95:8080 (LISTEN)
И по URL http://linux-ru.ru:8080/ страница замечательно открывается в браузере! ... но это дублирующий экземпляр форума, работающий на сером, локальном IP 192.168.1.103, который, вообще то говоря, по теории, недоступен из внешнего Интернет.

Но вот установить какой из ssh процессов (десяток и более для разных целей) на сервере ответственнен за туннель (кроме PID из анализа TCP порта) я не нашёл:

Код: Выделить всё

root@277938:~# ps aux | grep ssh | wc -l
18

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: О доступе к сайту на локалхост извне

Непрочитанное сообщение Olej » 15 янв 2020, 21:08

Olej писал(а):
15 янв 2020, 20:59
Но вот установить какой из ssh процессов (десяток и более для разных целей) на сервере ответственнен за туннель (кроме PID из анализа TCP порта) я не нашёл:
Предлагают иногда не запускать удалённо ssh фоновой опцией -f, а запускать как локальный процесс в фоне, а потом убить процесс по PID ... как-то так:

Код: Выделить всё

ssh -N -L1234:other:1234 server &
pid=$!
Но это я проверю как-то в другой раз.

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

О доступе к сайту на локалхост извне

Непрочитанное сообщение Olej » 30 янв 2020, 23:55

Ещё одна возможность доступа к локальным хостам - средствами TOR, и её присутствие в стандартном репозитории Debian:

Код: Выделить всё

olej@ACER:~$ aptitude search OnionShare
p   onionshare                                                                  - Share a file over Tor Hidden Services anonymously and securely                        

Код: Выделить всё

olej@ACER:~$ aptitude show OnionShare
E: Не удалось найти пакет OnionShare             

olej@ACER:~$ aptitude show onionshare
Пакет: onionshare                                
Версия: 1.3.2-1
Состояние: не установлен
Приоритет: необязательный
Раздел: net
Сопровождающий: Debian Privacy Tools Maintainers <pkg-privacy-maintainers@lists.alioth.debian.org>
Архитектура: all
Размер в распакованном виде: 467 k
Зависит: python3:any (>= 3.3.2-2~), python3-flask, python3-stem (>= 1.4.0), python3-pyqt5, obfs4proxy, tor
Рекомендует: torbrowser-launcher
Описание: Share a file over Tor Hidden Services anonymously and securely
 OnionShare lets you securely and anonymously share a file of any size with someone. It works by starting a web server, making it accessible as a Tor hidden service,
 and generating an unguessable URL to access and download the file. It doesn't require setting up a server on the Internet somewhere or using a third party filesharing
 service. You host the file on your own computer and use a Tor hidden service to make it temporarily accessible over the Internet. The other user just needs to use the
 Tor Browser and to enter the URL to download the file from you.
Домашняя страница: https://onionshare.org
Метки: interface::commandline, interface::graphical, interface::x11, privacy::no-known-issues, role::program, works-with::file, x11::application

Код: Выделить всё

olej@ACER:~$ sudo apt install onionshare
[sudo] пароль для olej: 
Чтение списков пакетов… Готово
Построение дерева зависимостей       
Чтение информации о состоянии… Готово
Будут установлены следующие дополнительные пакеты:
  obfs4proxy python3-blinker python3-flask python3-itsdangerous python3-jinja2 python3-stem python3-werkzeug tor tor-geoipdb torsocks
Предлагаемые пакеты:
  python-blinker-doc python-flask-doc python-jinja2-doc ipython3 python3-termcolor python3-watchdog python-werkzeug-doc mixmaster torbrowser-launcher tor-arm
  apparmor-utils
Рекомендуемые пакеты:
  torbrowser-launcher
Следующие НОВЫЕ пакеты будут установлены:
  obfs4proxy onionshare python3-blinker python3-flask python3-itsdangerous python3-jinja2 python3-stem python3-werkzeug tor tor-geoipdb torsocks
Обновлено 0 пакетов, установлено 11 новых пакетов, для удаления отмечено 0 пакетов, и 64 пакетов не обновлено.
Необходимо скачать 5 729 kB архивов.
После данной операции объём занятого дискового пространства возрастёт на 22,7 MB.
Хотите продолжить? [Д/н] y
Пол:1 http://deb.debian.org/debian buster/main amd64 obfs4proxy amd64 0.0.7-4+b12 [1 723 kB]
Пол:2 http://deb.debian.org/debian buster/main amd64 python3-itsdangerous all 0.24+dfsg1-2 [13,0 kB]
Пол:3 http://deb.debian.org/debian buster/main amd64 python3-jinja2 all 2.10-2 [106 kB]
Пол:4 http://deb.debian.org/debian buster/main amd64 python3-werkzeug all 0.14.1+dfsg1-4+deb10u1 [196 kB]
Пол:5 http://deb.debian.org/debian buster/main amd64 python3-flask all 1.0.2-3 [93,0 kB]
Пол:6 http://deb.debian.org/debian buster/main amd64 python3-stem all 1.7.1-1 [284 kB]
Пол:7 http://deb.debian.org/debian buster/main amd64 tor amd64 0.3.5.8-1 [1 779 kB]
Пол:8 http://deb.debian.org/debian buster/main amd64 onionshare all 1.3.2-1 [105 kB]
Пол:9 http://deb.debian.org/debian buster/main amd64 python3-blinker all 1.4+dfsg1-0.2 [14,0 kB]
Пол:10 http://deb.debian.org/debian buster/main amd64 tor-geoipdb all 0.3.5.8-1 [1 340 kB]
Пол:11 http://deb.debian.org/debian buster/main amd64 torsocks amd64 2.3.0-2 [76,0 kB]
Получено 5 729 kB за 3с (1 893 kB/s)       
Выбор ранее не выбранного пакета obfs4proxy.
(Чтение базы данных … на данный момент установлено 427547 файлов и каталогов.)
Подготовка к распаковке …/00-obfs4proxy_0.0.7-4+b12_amd64.deb …
Распаковывается obfs4proxy (0.0.7-4+b12) …
Выбор ранее не выбранного пакета python3-itsdangerous.
Подготовка к распаковке …/01-python3-itsdangerous_0.24+dfsg1-2_all.deb …
Распаковывается python3-itsdangerous (0.24+dfsg1-2) …
Выбор ранее не выбранного пакета python3-jinja2.
Подготовка к распаковке …/02-python3-jinja2_2.10-2_all.deb …
Распаковывается python3-jinja2 (2.10-2) …
Выбор ранее не выбранного пакета python3-werkzeug.
Подготовка к распаковке …/03-python3-werkzeug_0.14.1+dfsg1-4+deb10u1_all.deb …
Распаковывается python3-werkzeug (0.14.1+dfsg1-4+deb10u1) …
Выбор ранее не выбранного пакета python3-flask.
Подготовка к распаковке …/04-python3-flask_1.0.2-3_all.deb …
Распаковывается python3-flask (1.0.2-3) …
Выбор ранее не выбранного пакета python3-stem.
Подготовка к распаковке …/05-python3-stem_1.7.1-1_all.deb …
Распаковывается python3-stem (1.7.1-1) …
Выбор ранее не выбранного пакета tor.
Подготовка к распаковке …/06-tor_0.3.5.8-1_amd64.deb …
Распаковывается tor (0.3.5.8-1) …
Выбор ранее не выбранного пакета onionshare.
Подготовка к распаковке …/07-onionshare_1.3.2-1_all.deb …
Распаковывается onionshare (1.3.2-1) …
Выбор ранее не выбранного пакета python3-blinker.
Подготовка к распаковке …/08-python3-blinker_1.4+dfsg1-0.2_all.deb …
Распаковывается python3-blinker (1.4+dfsg1-0.2) …
Выбор ранее не выбранного пакета tor-geoipdb.
Подготовка к распаковке …/09-tor-geoipdb_0.3.5.8-1_all.deb …
Распаковывается tor-geoipdb (0.3.5.8-1) …
Выбор ранее не выбранного пакета torsocks.
Подготовка к распаковке …/10-torsocks_2.3.0-2_amd64.deb …
Распаковывается torsocks (2.3.0-2) …
Настраивается пакет python3-stem (1.7.1-1) …
update-alternatives: используется /usr/bin/python3-tor-prompt для предоставления /usr/bin/tor-prompt (tor-prompt) в автоматическом режиме
Настраивается пакет python3-itsdangerous (0.24+dfsg1-2) …
Настраивается пакет obfs4proxy (0.0.7-4+b12) …
Настраивается пакет python3-jinja2 (2.10-2) …
Настраивается пакет python3-werkzeug (0.14.1+dfsg1-4+deb10u1) …
Настраивается пакет tor (0.3.5.8-1) …
Something or somebody made /var/lib/tor disappear.
Creating one for you again.
Something or somebody made /var/log/tor disappear.
Creating one for you again.
Created symlink /etc/systemd/system/multi-user.target.wants/tor.service → /lib/systemd/system/tor.service.
Настраивается пакет torsocks (2.3.0-2) …
Настраивается пакет python3-blinker (1.4+dfsg1-0.2) …
Настраивается пакет python3-flask (1.0.2-3) …
Настраивается пакет tor-geoipdb (0.3.5.8-1) …
Настраивается пакет onionshare (1.3.2-1) …
Обрабатываются триггеры для mime-support (3.62) …
Обрабатываются триггеры для systemd (241-7~deb10u2) …
Обрабатываются триггеры для man-db (2.8.5-2) …
Обрабатываются триггеры для desktop-file-utils (0.23-4) …

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: О доступе к сайту на локалхост извне

Непрочитанное сообщение Olej » 31 янв 2020, 02:03

Olej писал(а):
30 янв 2020, 23:55
Ещё одна возможность - средствами TOR
Проект Tor представил OnionShare 2, приложение для защищённого обмена файлами
21.02.2019
Проект Tor представил выпуск утилиты OnionShare 2, позволяющей безопасно и анонимно передавать и получать файлы, а также организовать работу публичного файлообменника. Код проекта написан на языке Python и распространяется под лицензий GPLv3. Готовые пакеты подготовлены для Ubuntu, Fedora, Windows и macOS.

OnionShare запускает на локальной системе web-сервер, работающий в форме скрытого сервиса Tor, и делает его доступным для других пользователей. Для доступа к серверу генерируется непредсказуемый onion-адрес, который выступает в роли точки входа для организации обмена файлами (например, "http://ash4...pajf2b.onion/slug", где slug - два случайных слова для усиления защиты). Для загрузки или отправки файлов другим пользователям достаточно открыть этот адрес в Tor Browser. В отличие от отправки файлов по email или через такие сервисы, как Google Drive, DropBox WeTransfer, система OnionShare является самодостаточной, не требует обращения к внешним серверам и позволяет передать файл без посредников напрямую со своего компьютера.

От других участников обмена файлами не требуется установка OnionShare, достаточно обычного Tor Browser и одного экземпляра OnionShare у одного из пользователей. Конфиденциальность пересылки осуществляется путём безопасной передачи адреса, например, используя режим end2end-шифрования в мессенджере. После завершения передачи адрес сразу удаляется, т.е. передать файл второй раз в обычном режиме не получится (требуется применение отдельного публичного режима).
Как использовать OnionShare для обме1на / получения файлов
...
Делитесь файлами с OnionShare
Чтобы поделиться файлами с OnionShare, начните с запуска приложения. На Share Files вкладке нажмите Add и добавьте файлы, которыми вы хотите поделиться (если вы выберете здесь несколько файлов, они будут добавлены в zip-архив при их загрузке):
...
и т.д.

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: О доступе к сайту на локалхост извне

Непрочитанное сообщение Olej » 23 фев 2020, 18:07

Возвращаясь к реверсному SSH туннелю...
Вот нечто подобное у меня замечательно работает:
Olej писал(а):
15 янв 2020, 20:59
На localhost:

Код: Выделить всё

olej@ACER:~/2020_WORK/rus.linux.net.hist/local$ ssh -fN -R 185.178.47.95:8080:localhost:80 olej@185.178.47.95
olej@185.178.47.95's password:
Но! :-o
Установленная так сессия через некоторое время завершается. :-?
Некоторое объяснение этому находим, например, здесь - Тайм-аут TCP:
Тайм-аут сервера обычно совпадает с таймаутом TCP. Это происходит потому, что SSH сервер автоматически настраивае значение параметра TCP Keepalive, который определяет время, через которое посылаются запросы для проверки наличия соединения во время простоя. Это значение зависит от конкретной системы. В некоторых случаях этот интервал очень мал и составляет 5 секунд, в других может превышать два часа. В среднем же это значение находится в пределе от 3 до 5 минут. Это стандартное значение для большинства SSH сессий.
Для реального использования реверсного SSH туннеля для доступа извне к локалхост этот интервал нужно увеличить, например, до нескольких часов. О том как это сделать (изменив конфиг-файл SSHD) написано здесь: удалённый SSH.

Ответить

Вернуться в «Сети»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 7 гостей