- Friday, July 27, 2018
- Uncategorized
Gdy czytasz tutoriale o konfiguracji serwerów i zaporach sieciowych, często natkniesz się na adresy IP w tym formacie:
Pierwsza część może być dla Ciebie znajoma, ale część po dwukropku (:) już nie. Ta liczba (8080) reprezentuje port sieciowy.
Adres IP jest unikalną sekwencją liczb, która reprezentuje interfejs w sieci, często w Internecie. Dzięki adresowi IP sieć może kierować pakiety danych do interfejsu sieciowego określonego urządzenia, którym może być serwer, router, a nawet telefon.
Na tych urządzeniach działa wiele programów, które mogą być zainteresowane odbieraniem danych z sieci i wysyłaniem danych do innych urządzeń. Ale adres IP nie mówi urządzeniu odbierającemu nic o tym, dla jakiego programu przeznaczone są dane. To jest właśnie rola portu sieciowego.
Wewnątrz każdej porcji danych wysyłanych przez połączenie TCP lub UDP (w tym HTTP (sieć), SSH, FTP, DNS i większość innych znanych protokołów) znajduje się numer portu źródłowego i numer portu docelowego.
Numery te nie reprezentują kawałka sprzętu lub fizycznego portu, takiego jak port ethernetowy lub port oświetlenia. Są one konstrukcją programową, która kojarzy proces świadczący usługę z pakietami danych, które mają odpowiedni port docelowy.
Proces to kawałek oprogramowania, który jest uruchomiony na serwerze. Serwer WWW jest procesem, podobnie jak serwery SSH, FTP i DNS. Każdy program, który działa na serwerze jest procesem.
System operacyjny serwera używa portów, aby upewnić się, że dane są odbierane przez właściwy proces, często przez dostarczenie ich do kawałka pamięci zmapowanego w tym celu. Procesy są przywiązane do konkretnego portu, a w przypadku połączeń TCP do każdego portu może być przywiązany tylko jeden proces. Jeśli więcej niż jeden proces jest związany z portem, może dojść do konfliktu i dane mogą nie zostać dostarczone do właściwego procesu.
Porty są reprezentowane przez liczby z zakresu od 0 do 65535, czyli najwięcej, ile zmieści się w 16-bitowej, niepodpisanej liczbie całkowitej. Niektóre z tych numerów są związane z konkretnymi typami usług. Porty od 0 do 1024 są nazywane dobrze znanymi portami i są umownie kojarzone z najbardziej powszechnymi typami usług sieciowych. Serwery WWW używają portu 80, serwery SSH portu 22 i tak dalej.
Porty od 1024 do 49151 są portami zarejestrowanymi. Mogą być zarejestrowane w ICANN przez organizacje do użytku z ich oprogramowaniem. Porty powyżej 49151 są portami prywatnymi, które mogą być używane do dowolnych celów.
Jeśli uruchomisz następującą komendę na swoim serwerze CentOS, będziesz mógł zobaczyć listę portów i usług, którym odpowiadają.
less /etc/services
Zrozumienie jak działają porty jest przydatne w różnych okolicznościach. Na przykład, wiele botów brute force celuje w serwery SSH poprzez port 22. Możesz chcieć powiązać SSH z innym portem, aby Twój serwer nie musiał radzić sobie z tysiącami nieuprawnionych żądań logowania. Możesz zmienić port SSH na jeden z prywatnych portów (powyżej 49151) poprzez edycję ustawienia „Port” w „/etc/ssh/sshd_config”. Boty brute force nie będą już w stanie go znaleźć. Jeśli zmienisz port SSH, upewnij się, że pamiętasz na co go zmieniłeś, w przeciwnym razie nie będziesz mógł się zalogować.
Porty są również przydatne do konfigurowania firewalli i do uruchamiania serwerów deweloperskich: często używa się portu 8080 jako alternatywy dla portu 80 dla serwerów WWW.
W przyszłym artykule przyjrzymy się jak porty są używane do zabezpieczania serwerów CentOS za pomocą firewalla iptables.