Jak bezpieczna jest zmiana zakresu portów efemerycznych systemu Linux

14

Widzę następujący efemeryczny zakres portów na moim Linux-ie.

sysctl net.ipv4.ip_local_port_range
net.ipv4.ip_local_port_range = 32768    61000

Chcę rozszerzyć zakres portów, zaczynając od około 16000. Tutaj jest szybkie pytanie: jak bezpiecznie jest zmieniać zakres w kontekście na inne aplikacje? Czy zmiana wpłynie na inne aplikacje? Rozumiem, że wpływ na aplikację ma tylko sytuacja, gdy używa ona portów w określonym zakresie portów. Ale ogólnie, w jaki sposób rozwiązuje się tego rodzaju problemy?

Ashwin Tumma
źródło
Nie sądzę, że ma to wpływ na inne aplikacje, ale nie jestem pewien. Interesujące pytanie.
ikrabbe
Dobrze. Nawet próbowałem poszukać innej dokumentacji i nie znalazłem żadnego wpływu na inne aplikacje. Poniższe dwa łącza stanowią doskonałe wyjaśnienie powodu, dla którego napotkałem ten problem: vincent.bernat.im/en/blog/2014-tcp-time-wait-state-linux.html ncftp.com/ncftpd/doc/misc /ephemeral_ports.html
Ashwin Tumma
@ikrabbe Z pewnością będzie to miało wpływ na inne aplikacje, jeśli np. twoja przeglądarka otworzy efemeryczny port, aby skontaktować się ze stroną internetową, wtedy ktoś / rzecz spróbuje uruchomić aplikację, która przypadkiem używa tego portu. Aplikacja się nie powiedzie.
goldilocks
3
Dla zachowania kompletności składnia edycji zakresu numerów portów jest następująca: $ sudo sysctl -w net.ipv4.ip_local_port_range = "15000 61000"
Ashwin Tumma

Odpowiedzi:

10

Zmiana efemerycznego zakresu portów może powodować problemy, jeśli używasz Mesos .

Mesos reklamuje zasoby hosta na różnych platformach Mesos, które mogą następnie wybrać wykorzystanie reklamowanych zasobów. Reklamowane zasoby obejmują procesor, pamięć, porty itp. Domyślny zestaw portów reklamowanych przez Mesos to 31000-32000 . Pozwala to uniknąć kolizji z domyślnym zakresem portów efemerycznych systemu Linux 32768-61000 .

W szczególności Mesos nie wie, czy port jest używany przez inny proces, po prostu śledzi przypisanie portów do encji, które koordynuje ( Mesos Tasks & Mesos Executors ). Jeśli więc zmienisz zakres portu efemerycznego tak, że pokrywa się on z zakresem portu Mesos, prawdopodobnie jakiś arbitralny proces użyje portu efemerycznego, który jest w rzeczywistości jednym z tych „portów Mesos”. Może to doprowadzić do zaoferowania Mesosowi tego portu do szkieletu Mesos , który napotka pozornie przypadkowe awarie jego wykonawców Mesos i / lub Zadań Mesos, ponieważ nie będą w stanie powiązać się z tym portem.

Jeśli musisz zwiększyć swój efemeryczny zakres portów, a także uruchomić Mesos, możesz zmodyfikować reklamowane porty za pomocą parametru konfiguracyjnego mesos-slave(wkrótce zmienimy nazwę na mesos-agent) --resources.

erik.weathers
źródło
4

Możesz uzyskać listę usług, na które potencjalnie może mieć wpływ, sprawdzając, co znajduje się w tym zakresie w /etc/servicespliku lokalnym , np .:

awk '/^#/ { next } $2+0 >= 16000 && $2+0 < 32768 { print }' /etc/services

Lub w wiarygodnym miejscu:

wget http://www.iana.org/assignments/service-names-port-numbers/service-names-port-numbers.csv
awk -F, '$2+0 >= 16000 && $2+0 < 32768 { print }' service-names-port-numbers.csv
Josip Rodin
źródło
Dzięki za skrypt awk zdecydowanie pomaga w identyfikacji portów wymienionych w usługach!
Ashwin Tumma