Broker MQTT dostępny z zewnątrz bez otwierania portu w zaporze?

9

Chciałbym, aby mój broker MQTT był dostępny spoza mojej sieci domowej, ale trochę niechętnie otwieram port w zaporze. I chciałbym uniknąć używania mojego domowego adresu IP.

Posiadanie w domu niezaszyfrowanego otwartego brokera jest dość wygodne, ale to nie działa, jeśli mam go ujawnić. Jakie inne opcje mam?

Thomas Jensen
źródło
@Bence Kaulics jakieś sugestie dotyczące tego, czego brakuje w mojej odpowiedzi?
hardillb
1
@hardillb Twoja odpowiedź jest dobrym streszczeniem, ale myślę, że przydatne mogą być dodatkowe informacje na temat każdego punktu. Np. Jak ustawić taki most między dwoma brokerami. Również po prostu przyszedłbym do innych pomysłów, jeśli takie istnieją, ten opis nagrody jest najlepszy, jaki mogłem znaleźć, twoja odpowiedź również jest sama. Może powinienem był wybrać powód „Nie otrzymałem wystarczającej uwagi”.
Bence Kaulics,
Jako nie-ekspert zgodziłbym się, że punkt 2 (który wydaje się najcenniejszą częścią odpowiedzi) mógłby zostać nieco bardziej rozwinięty. Może z linkiem do poradnika, teraz na pewno.
Sean Houlihane,
niestety każdy inny typ brokera ma inny sposób skonfigurowania mostu, więc nie można udzielić ogólnej odpowiedzi (podobnie z konfiguracją uwierzytelniania / TLS)
hardillb 11.09.17

Odpowiedzi:

10

Zasadniczo masz 3 opcje, jeśli nie chcesz przekierowywać portu.

  1. Użyj brokera w chmurze, aby klient z domu zawsze się z nim łączył. Używaj TLS i uwierzytelniania, aby inni nie mogli podsłuchiwać ani wstrzykiwać niepożądanych wiadomości
  2. Użyj brokera w chmurze i skonfiguruj pomost między brokerem wewnętrznym a brokerem w chmurze (nadal chcesz zaszyfrować i ustawić nazwę użytkownika / hasło w brokerze w chmurze). Ma to tę zaletę, że wewnętrzne rzeczy działają dalej, jeśli połączenie internetowe zostanie zerwane.
  3. VPN na wszystkich urządzeniach zewnętrznych, aby umożliwić dostęp do sieci domowej (ale, szczerze mówiąc, prawdopodobnie będziesz musiał albo otworzyć port dla VPN lub mieć router, który obsługuje serwer VPN)

Jednak przekierowanie portu do odpowiednio skonfigurowanego (mniej więcej takiego samego jak brokera w chmurze) tak naprawdę nie stanowi ryzyka.

hardillb
źródło
1
Podoba mi się pomysł w chmurze, który ma dodatkową zaletę, że wszystkie usługi raportowania poza moją siecią domową będą nadal działały normalnie, jeśli mój lokalny broker odpadnie. A lokalny broker otrzyma „brakujące” dane po powrocie online. Świetny! :)
Thomas Jensen,
3

Ponieważ broker jest serwerem, MUSISZ otworzyć co najmniej jeden port, aby klienci mogli się połączyć.

Twój problem staje się więc szczególnym przypadkiem ujawnienia usługi w Internecie.

Dokonano tego za pośrednictwem DMZ, przez proxy lub w inny sposób, aby wymusić ściślejsze uwierzytelnianie niż usługa domyślna. Jeśli Twój serwer proxy mieszka w chmurze, rozszerza to strefę DMZ do chmury.

Najprostszym podejściem jest prawdopodobnie zahartowanie brokera (wyłączenie anonimowych klientów) i ograniczenie, kto może się z nim połączyć za pośrednictwem zapory ogniowej (zezwalaj tylko na niektóre adresy IP klientów, jeśli znasz je wcześniej).

Wsparcie Gambit
źródło
3
To nie jest poprawne, połączyłem mojego lokalnego brokera z chmurowym. A ponieważ połączenie mostkowe jest inicjowane z mojej sieci domowej, nie jest wymagane otwieranie portów.
Thomas Jensen,
3

@hardillb dał dobrą odpowiedź, ale pozwól mi spróbować dodać kilka szczegółów, dodając trochę „prawdziwego” dotyku:

  1. Wybierz brokera MQTT dostępnego publicznie. HiveMQ może być dobrym przykładem i można rozpocząć z try-out stronie opisującej sposób podłączenia do brokera:

Połącz się z publicznym brokerem

Host: broker.hivemq.com

Port: 1883

Port Websocket: 8000

  1. Wybierz klienta, który najlepiej do Ciebie pasuje, i użyj go do wewnętrznego połączenia brokera z publicznym brokerem MQTT. Na przykład twoim klientem C może być Paho MQTT . Klient obsługuje protokół SSL / TLS, więc Twoje bezpieczeństwo pozostaje na wysokim poziomie.

  2. Wbudowane Paho MQTT może być Twoim wyborem dla urządzeń zewnętrznych.

  3. HiveMQ ma zasady licencjonowania zgodnie z rzeczywistym użyciem, dzięki czemu możesz je rozważnie rozważyć. W każdym razie możesz sprawdzić tę stronę, aby uzyskać listę dostępnych w chmurze i testujących dostępnych brokerów MQTT.

Amit Vujic
źródło