Почему я не могу получить доступ к SSH с моего публичного IP-адреса, а случайные хак-боты могут?

281
Alexandre Cariage

У меня есть Raspberry Pi3 с Raspbian Stretch, который находится за домашним роутером.

/var/log/auth.log в RPi последовательно показывает неудачные попытки входа в систему с общими именами пользователей (root, operator, webmaster и т. д.), на случайных портах с большими числами, примерно 3 попытки каждые 10 секунд, с китайского адреса. Я знаю, что это неудивительно.

Я не понимаю, почему PuTTY не может подключиться к тому же серверу, когда я пытаюсь связаться с ним через мой общедоступный IP-адрес?

Я очень новичок в этой области, но, насколько мне известно, это полный парадокс.

Некоторые дополнительные технические примечания:

  • Iptables не тронут

  • Nmap на мой общедоступный IP-адрес дает "все 1000 сканированных портов отфильтрованы"

  • Функциональный сервер LAMP содержит Owncloud, который работает, но только из локальной сети, так как любые попытки связаться с моим публичным IP-адресом с треском проваливаются.
  • мои попытки подключения к моему общедоступному IP сделаны из той же локальной сети, что и RPi.
  • порт 22 перенаправлен на RPi в маршрутизаторе, и брандмауэр маршрутизатора полностью отключен в целях моих нынешних тестов.
  • в роутере мой RPi установлен в DMZ. Afaik, результаты с этой настройкой такие же.

Где мои пакеты сброшены и почему?

Где я могу найти журнал, который покажет мне?

заранее спасибо

0
Спасибо, что указали это, я проверю дубликат и прокомментирую или разрешу пост. Alexandre Cariage 6 лет назад 0
Попробуйте создать полный диапазон портов за пределами вашей сети. (Как в доме друга). Я полагаю, что проблема, которую вы описываете, называется "закрепление NAT". Tim_Stewart 6 лет назад 0

1 ответ на вопрос

2
Appleoddity

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

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

Учти это...

  • У вас Server Aв локальной сети есть IP 10.10.10.10.
  • У вас Computer Aв локальной сети есть IP 10.10.10.20.
  • У вас есть Router Aс LANIP 10.10.10.1и WANIP из11.11.11.11 .
  • У вас есть Computer Bвне вашей сети с IP 12.12.12.12.
  • Вы перешли port 22с вашего WAN IP на Server A.

Из-за пределов вашей сети трафик выглядит так:

Компьютер B пытается подключиться к серверу A:

Source IP: 12.12.12.12 Src Port: 12345 Destination IP: 11.11.11.11 Dest Port: 22 

Маршрутизатор A NATs пакет и отправляет его на сервер A:

Source IP: 12.12.12.12 Src Port: 12345 Destination IP: 10.10.10.10 Dest Port: 22 

Сервер A отвечает на компьютер B:

Source IP: 10.10.10.10 Src Port: 22 Destination IP: 12.12.12.12 Dest Port: 12345 

Маршрутизатор A NATs пакет и отправляет его на компьютер B:

Source IP: 11.11.11.11 Src Port: 22 Destination IP: 12.12.12.12 Dest Port: 12345 

Все работает как задумано. Теперь рассмотрим тот же сценарий, но внутри вашей сети:

Компьютер A пытается подключиться к серверу A:

Source IP: 10.10.10.20 Src Port: 12345 Destination IP: 11.11.11.11 Dest Port: 22 

Маршрутизатор A NATs пакет и отправляет его на сервер A:

Source IP: 10.10.10.20 Src Port: 12345 Destination IP: 10.10.10.10 Dest Port: 22 

Сервер A отвечает на компьютер A:

Source IP: 10.10.10.10 Src Port: 22 Destination IP: 10.10.10.20 Dest Port: 12345 

Исходный IP-адрес находится в той же подсети, что и IP-адрес назначения. Server Aне отправляет пакет обратно маршрутизатору, он отправляет его напрямую Computer A. Computer Aотбрасывает пакет, потому что он пришел 10.10.10.10и отправил исходный пакет 11.11.11.11. Ожидается, что пакет вернется из11.11.11.11 .

Чтобы решить эту проблему, вы должны создать второе, более конкретное правило NAT для соответствия трафику, исходящему из вашей сети. Это придет после вашего исходного правила NAT. Вам нужно будет сделать Source NAT, который выглядит следующим образом:

srcnat src-address=10.10.10.0/24 dst-address=10.10.10.10 dst-port=22 out-interface=LAN action=masquerade 

Теперь давайте посмотрим на это снова:

Компьютер A пытается подключиться к серверу A:

Source IP: 10.10.10.20 Src Port: 12345 Destination IP: 11.11.11.11 Dest Port: 22 

Маршрутизатор A NATs пакет и отправляет его на сервер A:

Source IP: 10.10.10.1 Src Port: 12345 Destination IP: 10.10.10.10 Dest Port: 22 

Сервер A отвечает на компьютер A:

Source IP: 10.10.10.10 Src Port: 22 Destination IP: 10.10.10.1 Dest Port: 12345 

Маршрутизатор A NATs пакет и отправляет его на компьютер A:

Source IP: 11.11.11.11 Src Port: 22 Destination IP: 10.10.10.20 Dest Port: 12345 

Все работает как задумано.

Как вы реализуете это второе правило NAT, зависит от аппаратного и программного обеспечения вашего маршрутизатора. Ваш пробег может отличаться.

«распространенная проблема, вызванная шпилькой NAT» - что такое «шпилька NAT»? Я думал, что это * решение *, вы говорите, что это причина. Пожалуйста, ответьте на мои сомнения. Мне не хватает знаний, чтобы быть уверенным, что ваш ответ технически правильный. Тем не менее, я думаю, что было бы полезно упомянуть, что некоторые домашние маршрутизаторы реализуют правильное решение по умолчанию, все, что нужно сделать, это определить правило переадресации портов, как с веб-интерфейсом маршрутизатора. Очевидно, что маршрутизатор OP не является одним из них. Kamil Maciorowski 6 лет назад 0
@KamilMaciorowski NAT шпилька (петля NAT) - это то, что вы пытаетесь сделать - использовать порт перенаправления изнутри частной сети на другой компьютер в частной сети. Проблема в том, что не все маршрутизаторы поддерживают это. В зависимости от маршрутизатора вы можете включить его или вам может потребоваться переключиться на маршрутизатор, который его поддерживает. Gordon Davisson 6 лет назад 2
Это глупая проблема. Либо используйте локальный IP-адрес, с которым вы хотите установить связь, либо создайте на хост-компьютере запись DNS, которая внутренне указывает на IP-адрес, на который вы хотите быть направлены. Это довольно пост, кстати. Tim_Stewart 6 лет назад 0
Спасибо @Appleoddity за четкое объяснение, которое помогло мне понять, что происходит в пакетном режиме! Но для правила NAT я не знаю, как установить его в своем маршрутизаторе (не могу войти в него через telnet), поэтому я буду использовать решение для записи DNS от Tim_Stewart, спасибо Тим. Alexandre Cariage 6 лет назад 0

Похожие вопросы