Dlaczego źle jest mieć otwarte porty?


36

Oto coś, co zawsze mnie zaskakiwało. Dlaczego źle jest mieć otwarte porty na komputerze? Zakładając, że nie masz wirusa na komputerze ani innego programu nasłuchującego na porcie, który może coś zrobić, dlaczego to ma znaczenie, jeśli port jest otwarty? Jeśli jakaś złośliwa osoba zacznie wysyłać pakiety do portu, ale nie ma nic, by odebrać dane i coś z tym zrobić, dlaczego to ma znaczenie? Komputer nie tylko arbitralnie wykonuje otrzymywane dane. Rozumiem, że zalanie komputera pakietami może spowodować awarię, ponieważ po prostu nie jest w stanie poradzić sobie z ilością danych, ale rozważam tylko problemy z bezpieczeństwem, które faktycznie zmieniają pliki na komputerze.

Aktualizacja

Dizękuję za dotychczasowe odpowiedzi. Rozumiem teraz, że otwarty port faktycznie oznacza, że ​​istnieje program, który można wykorzystać do nasłuchiwania na tym porcie. Ale dlaczego tak trudno pisać oprogramowanie, którego nie można wykorzystać? Aby wyrządzić jakąkolwiek rzeczywistą szkodę komputerowi, program nie musiałby pozwolić na przesłanie jednego lub więcej plików, a następnie jeden z tych plików musiałby zostać wykonany. Wydaje się, że byłoby to niezwykle trudne, aby pozwolić na to przypadkowo.

Odpowiedzi:


36

Port nie jest otwarty, jeśli coś nie nasłuchuje na nim połączenia.

Powodem, dla którego jest to zły sposób, aby wszystkie porty były dostępne wszędzie, jest to, że naraża te usługi nasłuchujące na tych portach na wykorzystanie. Właśnie dlatego istnieją zapory ogniowe, aby ograniczyć to, co może się łączyć z niektórymi portami, aby zmniejszyć powierzchnię narażoną przez usługi.


EDYTOWAĆ

Aby odpowiedzieć na pytanie, dlaczego ludzie nie mogą pisać oprogramowania, którego nie można wykorzystać:

Jest to dość proste w przypadku prostych programów, ale wiele programów wymagających gniazda jest złożonych. Jako takie mają wiele komponentów, z których wiele nie zostało nawet napisanych przez programistę (prawdopodobnie zawiera biblioteki). Nie można polegać na innych ludziach, aby zapewnić bezpieczeństwo sieci, gdy istnieją metody utwardzania, z których można korzystać samodzielnie, takie jak zapory ogniowe.

Jak już zauważyłeś, arbitralne / zdalne wykonywanie kodu stanowi ogromne ryzyko. Niestety przepełnienia buforów i inne wady bezpieczeństwa, które na to pozwalają, są powszechne. Spójrz na każdą aktualizację zabezpieczeń Microsoft i założę się, że łata ona zdalne wykonanie kodu lub podniesienie uprawnień, a MS to ogromna firma z setkami programistów i miliardami dolarów.


4
Dodam tylko: jeśli na przykład wiesz, że usługa zawiera błąd, którego można użyć do infiltracji kodu lub cokolwiek innego, i faktycznie widzisz, że ta usługa jest uruchomiona, jest to otwarte zaproszenie;)
Felix

9

Jeśli chodzi o napisaną aktualizację:

Dizękuję za dotychczasowe odpowiedzi. Rozumiem teraz, że otwarty port faktycznie oznacza, że ​​istnieje program, który można wykorzystać do nasłuchiwania na tym porcie. Ale dlaczego tak trudno pisać oprogramowanie, którego nie można wykorzystać? Aby wyrządzić jakąkolwiek rzeczywistą szkodę komputerowi, program nie musiałby pozwolić na przesłanie jednego lub więcej plików, a następnie jeden z tych plików musiałby zostać wykonany. Wydaje się, że byłoby to niezwykle trudne, aby pozwolić na to przypadkowo.

Jest to bardzo trudne do oprogramowania napisać, że nie może być wykorzystana!

Przeczytałem książkę Building Secure Software i jedną z omawianych przez nią kwestii było wykorzystanie przepełnienia stosu. Były tam dwa bardzo przerażające fakty:

  • Aby program miał błąd przepełnienia stosu, jest bardzo łatwy do zrobienia, szczególnie gdy program jest napisany w C. W języku programowania C wiele funkcji nie jest domyślnie bezpiecznych, a programista albo musi wiedzieć, aby uniknąć podatnych funkcji lub musi podjąć specjalne działania, aby być bezpiecznym.
  • Exploit, którego haker musi użyć, jest krótki - bardzo krótki. Było to mniej niż połowa strony języka asemblera, co przekłada się na około 100 bajtów kodu maszynowego. Ten kod exploita jest wystarczający, aby dać powłoce hakera dostęp do twojego komputera. Przesyłanie i wykonywanie dużych plików nie jest wymagane - tylko niewielki fragment kodu, który można wstawić do pośrodku legalnych danych.

Więc jeśli haker może znaleźć program, który (a) ma błąd przepełnienia stosu, który jest (b) możliwy do wykorzystania w sieci i (c) ma kilka 100 bajtów w swoim buforze, oznacza to, że komputer jest włamany. Na szczęście wiedza na temat błędów przepełnienia stosu jest obecnie dość powszechna, ale wciąż się pojawiają. 5 lat temu i dłużej był to znacznie częstszy problem.

Wracając do pierwotnego pytania, powinieneś unikać otwartych portów, aby uniknąć wypadku z błędem, który można wykorzystać w programie. Masz teraz drugi powód: zdalna powłoka, której używałby haker, to kolejny otwarty port. Jeśli masz zaporę sieciową, która blokuje wszystko oprócz tego, na co specjalnie zezwalasz, możesz również zablokować tę zdalną powłokę (chociaż haker nadal byłby w stanie robić inne nieprzyjemne rzeczy na twoim komputerze, więc nie bądź zadowolony!)


2
IIRC, Donald Knuth (?) Właśnie zakończył matematyczne dowodzenie, że jeden z mniejszych programów, które napisał, był wolny od błędów i zajęło wiele lat
RCIX

7
  • Otwarty port: gdy ktoś zapyta, komputer odpowiada, że ​​usługa nasłuchuje na tym porcie. Oznacza to, że wszystko przychodzące do tego portu zostanie przetworzone przez program (usługę) działający na tym komputerze.
  • Zamknięty port: Gdy ktoś zapyta, komputer odpowiada, że ​​na tym porcie nie ma żadnych usług. Akser będzie wiedział, że na adres odpowiada komputer.
  • Port ukrycia: Gdy ktoś zapyta, nie otrzyma odpowiedzi. Chodzi o to, aby ukryć się, jeśli w ogóle pod adresem znajduje się komputer. Może to jednak nie być bardzo skuteczne, ponieważ w komentarzach pojawia się Joschi.

Jeśli masz otwarty port, jesteś bezpieczny, pod warunkiem, że program przetwarzający przychodzące rzeczy nie ma dostępnych exploitów. Ale exploity znajdują się cały czas i dobrze jest wiedzieć, że wokół sieci jest wiele skanów portów, szukających celów.

Zamknięte porty nadal reagują na akser, więc potencjalny atakujący wie, aby kontynuować sprawdzanie innych portów. Z drugiej strony tak właśnie działa Internet. Chociaż porty typu stealth starają się nie przekazywać potencjalnym atakującym żadnych informacji, teoretycznie łamią specyfikację.

Z punktu widzenia bezpieczeństwa każdy otwarty port jest ogromną luką, ponieważ kod jest wykorzystywany do przetwarzania obcych danych. Zapora ogniowa (lub router NAT) zapewnia, że ​​żaden ruch przychodzący nie dociera do twojego komputera, nawet jeśli system ma otwarte porty. W ten sposób skutecznie zamykają wszystkie porty.


1
Twoja definicja „portu ukrytego” jest pobożnym życzeniem. W rzeczywistości atakujący wie, że istnieje komputer, jeśli nie otrzyma żadnej odpowiedzi. Jeśli na tym konkretnym adresie IP nie będzie komputera, poprzedni router wyśle ​​komunikat o tym. Z „ukrytymi portami” tak się nie dzieje ...
joschi,

@joschi: Cóż, to koncepcja, którą widziałem w Internecie, więc myślę, że dobrze jest ją zdefiniować. Ale masz rację. Zredagowałem odpowiedź, aby odzwierciedlić twój komentarz. Przynajmniej sprawia, że ​​docelowy adres IP wygląda tak, jakby znajdował się za routerem NAT. Sam nigdy nie byłem fanem tej koncepcji: jeśli masz otwarte porty, upewnij się, że są uruchomione bezpieczne usługi. A jeśli nie masz otwartych portów, nie ma problemu z powiedzeniem sieci, że istniejesz. Stealth pachnie jak szum bezpieczeństwa.
Ilari Kajaste,

joschi: nie wszystkie routery to robią. wiele routerów po prostu ślepo przekazuje na adresy IP, na których nie ma systemu. połączenie próbuje przekroczyć limit czasu, ponieważ klient nudzi się próbą uzgadniania trzech sposobów.
benc

6

O ile mi wiadomo, otwarty port oznacza, że ​​program go słucha. Istnieje więc pewien rodzaj usługi przetwarzającej dane.


3

Zakładając , że nie masz wirusa na komputerze ani innego programu nasłuchującego na porcie, który może coś zrobić, dlaczego to ma znaczenie, jeśli port jest otwarty? Jeśli jakaś złośliwa osoba zacznie wysyłać pakiety do portu, ale nie ma nic, by odebrać dane i coś z tym zrobić, dlaczego to ma znaczenie?

Wniebowzięcie jest matką wszystkich efektów :)

raczej bezpieczne niż przepraszam ... oto lektura dla ciebie na makeuseof.com:

Objaśnienie technologii: Otwarte porty routera i ich konsekwencje dla bezpieczeństwa


dobry, krótki odczyt.
DaveParillo,

1

Nie jestem eksporterem zabezpieczeń, ale przeprowadziłem małe badania ... Port „otwarty” to port skonfigurowany do akceptowania przychodzącego połączenia TCP.

Jeśli masz aplikacje nasłuchujące tylko na portach 9, 21 i 80, a zapora blokuje dostęp do tych trzech portów, technicznie nie masz otwartych portów. IOW, na przykład, port 25 nie jest otwarty, ponieważ nic nie nasłuchuje.

Aby odpowiedzieć na twoje pytanie: Powodem, dla którego posiadanie otwartych portów na komputerze jest złe, jest to, że porty te można łatwo wykryć, a kiedy już odkryto, porty te są teraz podatne na luki w aplikacjach nasłuchujących.


Twoja definicja tego, czym jest port, jest nieprawidłowa. Port nie jest w żaden sposób ograniczony do TCP.
MDMarra,

1
Przypuszczam, że nie należy wierzyć WSZYSTKIMU, co czytają w sieci :) 5 z 6 najlepszych wyników Google wyraźnie podaje w swojej definicji „TCP”. google.com/…
Shoeless,

Nie, mówią TCP / IP. Duża różnica. TCP / IP obejmuje UDP
MDMarra

1
ICMP nie używa portu, jest to protokół warstwy 3, który jest zawarty w pakiecie protokołów IP.
MDMarra,

1
Mówię tylko, że jest to bardzo ważne w odniesieniu do zapór ogniowych (o których pośrednio chodzi). TCP jest stanowy, a zatem połączenia są zapamiętywane, a UDP nie. Wiele razy oznacza to, że porty muszą być otwarte dla ruchu powrotnego UDP, który jest inicjowany wewnętrznie, w przypadku gdy nie jest to konieczne w przypadku połączeń TCP, które są ustanawiane wewnętrznie.
MDMarra,

0

Z tego samego powodu, dla którego zamykasz i zamykasz drzwi i okna w domu.


3
zamykam drzwi i okna, bo na zewnątrz jest zimno. co to pytanie ma wspólnego z izolacją?
quack quixote

2
Czy twoje drzwi i okna nie izolują się, jeśli są tylko zamknięte? Czy dodatkowa śruba naprawdę zapewnia znacznie większą izolację.
Dentrasi

Dobra uwaga, ale warto zauważyć, że nie wszyscy zamykają drzwi i okna w domu. Może to być „Nie każdy chce chronić swoją własność” lub „Nie każdy lubi żyć w kulturze strachu”, w zależności od twojego punktu widzenia.
Ilari Kajaste,

-2

Powiedzmy, że otwarte porty są jak otwarte okno i otwarte drzwi, ale kiedy twoje okna są otwarte, złodziej lub szczur i pająk mogą wejść do środka # proszę powiedz mi, czy jestem głupi lub nieudolny Edytowano brak asininy Otwarte porty są jak otwarte okno, ale w Internecie jest otwarty port. Myślę, że również zamknięty port to zamknięte okna bez niego nie możemy się połączyć ani przeglądać. Myślę, że podobnie jak HTTP i SSH lub FTP bez niego nie możemy się połączyć, ponieważ to klient, to tylko połączenie TCP

Nie jestem ekspertem od bezpieczeństwa


Otwarte porty są wymagane do świadczenia usług. Tylko jeden z zillion możliwych przykładów: Gmail korzysta z otwartego portu (443 dla swojej witryny korzystającej z HTTPS). Ale prosi Cię o zalogowanie się przed pokazaniem czegokolwiek.
Arjan
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.