Mam aplikację, która jest podzielona na kilka części (procesów) komunikujących się przez TCP / IP, używając wstępnie zdefiniowanego portu na localhost.
Czy to zawsze jest bezpieczne? Czy jakaś zapora (korporacyjna, lokalnie zainstalowana, zapora systemu Windows itp.) Blokuje ten ruch? Czy może niektóre ustawienia użytkownika w systemie operacyjnym mogą blokować ten ruch?
Zainteresowane przeze mnie systemy to Windows (XP do 7) i Linux (Ubuntu, RHEL, SUSE)
Odpowiedzi:
Ruch do
127.0.0.0/8
i do::1/128
jest przetwarzany wewnętrznie przez stos TCP / IP. Nie dociera do fizycznej karty sieciowej i nigdy nie opuszcza komputera, więc nie może zostać zablokowany przez korporacyjne zapory sieciowe.Ponieważ gniazda pętli zwrotnej są bardzo powszechne dla IPC, dobre zapory ogniowe nigdy nie powinny go blokować. (Zapora systemu Windows tego nie robi.) Są jednak pewne zbyt paranoiczne sytuacje ... W takich przypadkach jednak obwiniam zaporę, a nie oprogramowanie.
W systemie Unix możliwe jest (przypadkowe) wyłączenie interfejsu pętli zwrotnej (zwykle
lo
). Ponownie, jest to bardzo nietypowe.Zamiast zakodowanego portu,
socketpair()
powinien być używany, gdy ma to zastosowanie, aby uniknąć kolizji portów.Jeszcze lepiej byłoby korzystać z gniazd Unix w systemie Linux i nazwanych potoków w systemie Windows.
źródło
Wszystkie te systemy obsługują uruchamianie oprogramowania zapory. Mogą one blokować połączenia localhost, chociaż nie jest to bardzo powszechne (w moim doświadczeniu).
Istnieje wiele aplikacji / usług, które to robią. Po prostu spróbuj uruchomić
netstat -an
na twoim pudełku: są szanse, że zobaczysz sporo aplikacji z otwartymi gniazdami nasłuchowymi127.0.0.1
.Nie znam ustawień użytkownika, które mogłyby uniemożliwić pracę w systemie Linux. Nie mam pojęcia dla Windows. Ale znowu jest to powszechna technika.
źródło