Na początek poznamy rolę portów i protokołów, pokażemy jak ustalać
które porty są otwarte i jakie aplikacje z nich korzystają. Potem
opowiemy sobie o usługach, czyli wyspecjalizowanych programach
wspomagających inne aplikacje lub inne usługi. Powody, dla których warto
poznać usługi i sposoby zarządzania nimi, są dwa: Po pierwsze - usługi
mniej lub bardziej kontrolują dostęp do swoich portów. Po drugie -
najczęściej pracują jako uprzywilejowany użytkownik - System lub Usługa Lokalna.
Porty i protokoły a dostęp do komputera.
Zanim dwa komputery połączą się ze sobą przez sieć opartą na protokole
TCP/IP muszą uzgodnić między sobą numer portu, na którym odbywać się będzie
transmisja danych. W sieciach port nie jest fizycznym gniazdem, jak złącze USB, lecz odgórnie ustalonym numerem używanym przez oba
komputery służącym do zdefiniowania "kanału", na którym odbywa się
wymiana danych. Nawiązanie połączenia odbywa się następująco: Komputer
inicjujący wysyła żądanie na określony numer IP i port. Jednostka
docelowa natomiast nasłuchuje na tym porcie i na podstawie numeru IP komputera źródłowego oraz informacji zawartych w wiadomości inicjującej decyduje
czy odrzucić, czy zaakceptować połączenie. W globalnej pajęczynie używa
się głównie dwóch protokołów (należących do TCP/IP) do komunikacji
między komputerami. Są to TCP (Transmission Control Protocol) i UDP
(User Datagram Protocol). W przypadku korzystania z TCP komputery
nawiązują stałe połączenie między sobą i komputer odbierający
potwierdza przybycie każdego pakietu. Jeżeli jednostka nadająca nie
otrzyma potwierdzenia odebrania pakietu, wysyła go ponownie. Zapewnia
to niezawodną transmisję danych od źródła do celu, ale generuje spore
obciążenie sieci, gdyż poza właściwym strumieniem danych przesyłane są
jeszcze pakiety kontrolne. W protokole UDP sprawa ma się inaczej.
Komputer źródłowy wysyła do sieci całą informację w postaci pakietów
UDP i nie sprawdza, czy dotarła ona w całości do celu. Może się to
wydawać beznadziejnym rozwiązaniem, ale jest tak tylko na pozór.
Protokół UDP doskonale sprawdza się przy przesyłaniu strumieni audio
lub wideo, gdzie utrata paru bajtów czy nawet jednego pakietu jest
dla użytkownika praktycznie niezauważalna, a sieć jest mniej obciążana
ze względu na brak pakietów kontrolnych.
Przypisanie portów do protokołów
W większości rozwiązań sieciowych panuje zasada: jedna aplikacja -
jeden port (lub zakres portów). Dlatego port jest ściśle związany z
protokołem, którego używa nasłuchujący na nim program. TCP i UDP są
tzw. protokołami warstwy transportowej, czyli są odpowiedzialne
za fizyczne przesyłanie danych w formie pakietów. Zadaniem protokołów
warstwy
aplikacji jest interpretacja pakietów na użytek danego narzędzia. Aby
połączyć się z programem trzeba wiedzieć na którym porcie nasłuchuje i
jakiego protokołu używa. Przedstawmy prosty przykład: gdy łączymy się z
serwerem WWW, nasza przeglądarka
łączy się z serwerem na porcie osiemdziesiątym i używa protokołu HTTP.
Prawie każdy widział źródłowy kod HTML. To właśnie on jest przesyłany
przez TCP, a protokół HTML na podstawie źródła buduje stronę WWW, a
przeglądarka wyświetla ją na monitorze.
| Port |
Protokół |
Uwagi |
| 21 |
FTP |
Protokół transmisji plików. |
| 22 |
SSH |
Bezpieczne logowanie do powłoki systemów Unix/Linux |
| 23 |
Telnet |
Protokół prosty terminal znakowego. |
| 25 |
SMTP |
Protokół pocztowy (wysyłający) |
| 80 |
HTTP |
Protokół przesyłania dokumentów WWW. |
| 110 |
POP3 |
Protokół pocztowy (odbierający) |
| 137-139 |
NETBIOS |
Network Basic Input/Output System |
| 443 |
HTTPS |
Bezpieczna sesja HTTP |
Numery portów i odpowiadających im protokołów są ujednolicone (patrz
tabela). To znaczy, że serwer WWW prawie zawsze odpowie na żądanie na
porcie 80 lub 443, Serwer pocztowy zawsze będzie się komunikował
z programem pocztowym na portach 25 i 110. Bardzo ułatwia to ruch w
sieci, bo nie musimy za każdym razem dowiadywać się o konfigurację
portów serwera, z usług którego zamierzamy skorzystać. Oczywiście można
skonfigurować serwer WWW (czy jakikolwiek inny), aby jego zawartość
była dostępna na innym porcie. Czasami znajduje to zastosowanie. Wtedy
adres w przeglądarce napiszemy tak: http://www.jakisserwer.pl:1234/.
Zestawianie połączenia z portem
Aplikacja w komputerze-kliencie chcąc podłączyć się do jakiejś usługi
lub innej aplikacji na komputerze-serwerze tworzy połączenie sieciowe i
wysyła pakiet zawierający swój IP i numer portu, z którym chce się
połączyć, np. 80 dla protokołu HTTP.
Załóżmy, że używamy TCP. W tym wypadku połączenie istnieje między
portem 80 serwera a dynamicznym portem (czyli losowym wolnym portem z
zakresu 1024-16383) klienta. Teraz możemy wymieniać z serwerem wiele
pakietów, przesyłać i odbierać kilobajty różnych informacji, sprawdzając
przy okazji poprawność transmisji, aż zakończymy połączenie (lub zrobi
to serwer).
Przy użyciu UDP cały proces jest prostszy: Wysyłamy do serwera (a
właściwie tylko "w kierunku" serwera - adresujemy i puszczamy w
świat) pakiet UDP z jakąś informacją. Tu nie mamy pewności czy
serwer otrzyma pakiet, ze względu na brak mechanizmów kontroli
transmisji w tym protokole.
Jeżeli serwer, do którego wysyłamy dane nie nasłuchuje na porcie, z
którym próbujemy się połączyć - nasze pakiety są odrzucane. Jest tak
zarówno dla TCP jak i UDP. Łatwo stąd wysnuć wniosek - im mniej
otwartych portów, na których nasłuchuje nasz komputer - tym trudniej o
włamanie.
Ustalamy aktywne porty
Nie można ograniczyć ilości otwartych portów bez wiedzy, które
porty są aktywne i jakie programy z nich korzystają - możemy tylko
całkowicie wyłączyć dostęp z zewnątrz i przez to uniemożliwić sobie
komunikację z zasobami Internetu czy sieci lokalnej. Chociaż nie ma
jednego narzędzia podającego wszystkie potrzebne informacje - posłużymy
się kilkoma programami pomocniczymi. Po pierwsze - Menedżer zadań. Ukazuje on wszystkie uruchomione procesy, wyświetla ich PID (identyfikator) i właściciela procesu. Aby uruchomić Menedżera zadań wciśnij
[Shift+Ctrl+Esc].

Standardowo Menedżer nie wyświetla PIDów. Aby to zmienić przejdź do zakładki Procesy, kliknij menu Widok i Wybierz kolumny..., zaznacz pole PID i kliknij OK. Drugim narzędziem, którym będziemy się posługiwać jest tasklist,
uruchamiany z wiersza poleceń, szczególnie z przełącznikiem /SVC,
ukazującym uruchomione usługi dla każdego z procesów. Dodatkowo
posłużymy się programem netstat, również uruchamianym z wiersza
polecenia. dodając przełącznik /O, dzięki któremu dowiesz się, jaki jest PID programu,
który otworzył każde z aktywnych połączeń:

Teraz już łatwo się domyślić, że wystarczy sprawdzić PID w Menedżerze zadań i od razu wiemy, który program używa danego portu oraz z jakim adresem się łączy. Porównajmy PID 332 z okna netstat i
Menedżera zadań. Już wiesz jaką stronę oglądamy i w jakiej przeglądarce? Proste.
Jeżeli w systemie nie ma żadnych aktywnych połączeń, nie zobaczymy żadnych rezultatów po wykonaniu netstat /O. Aby wyświetlić wszystkie porty, nawet nieaktywne, ale nasłuchujące wywołaj z wiersza polecenia netstat /A. Aby dodatkowo wyświetlić PIDy właścicieli portów i numery portów zamiast ich nazw - uruchomimy netstat /ANO. Przykładowe wywołanie poniżej.

Widzimy wiele portów nasłuchujących zarówno TCP i UDP i dwa aktywne
TCP. Teraz łatwo ustalić, które programy prowadzą nasłuch na tych
portach. Na stronie organizacji IANA, zajmującej się rejestracją portów
i powiązanych z nimi usług
(http://www.iana.org/assignments/port-numbers) sprawdźmy usługę na porcie
139 uruchomiony na naszym komputerze przez proces o identyfikatorze 4. Jest to
NetBIOS session service. Według Menedżera
zadań usługę tę uruchomiono jako użytkownik System. Port 1465 został przypisany dynamicznie dla przeglądarki internetowej. Port
1900 na protokole UDP jest używany przez svchost.exe. Tasklist /SVC
pokazuje, że proces ten uruchamia ponad 20 usług i nie da się przy
użyciu tych narzędzi stwierdzić, która usługa go używa. W tym wypadku
znowu zaglądamy na listę IANA i widzimy, że ten port odpowiedzialny
jest za obsługę uPnP.
W ten sposób możesz uzyskać informacje o każdym aktywnym lub nasłuchującym porcie w twoim komputerze.
Ograniczanie dostępu do portów
Podstawowym celem naszego działania będzie ograniczenie ilości portów
dostępnych z zewnątrz. Możemy zrealizować to na trzy sposoby:
- Zapora połączenia internetowego. To łatwe w konfiguracji
narzędzie pozwala zablokować cały ruch przychodzący z wyjątkiem
odpowiedzi na połączenia inicjowane z naszego komputera. Blokuje dostęp
z zewnątrz do nasłuchujących portów.
- Filtrowanie TCP/IP. Pozwalają odrzucić lub zaakceptować
przychodzące połączenie na podstawie adresu źródłowego, numeru portu
lub protokołu komputera wywołującego.
- Filtrowanie IPSec. Mechanizm przypomina filtry TCP/IP, ale
pozwalają na dodatkową ochronę przez szyfrowanie lub uwierzytelnianie
przychodzącego połączenia.
Szczegółowe informacje na temat konfiguracji i używania Zapory Windows
znajdziesz w innym artykule, dlatego nie będziemy poruszali tego
zagadnienia.
Filtrowanie TCP/IP
W Windows XP opcja ta jest bardzo ograniczona, ponieważ filtrować
można tylko pakiety przychodzące i tylko na podstawie numeru portu i
nazwy protokołu. Aby włączyć filtr TCP/IP wykonajmy poniższe kroki: Otwórz Panel sterowania, a w nim
Połączenia sieciowe, prawym przyciskiem myszy kliknij połączenie z Internetem i wybierz
Właściwości. W zakładce Ogólne zaznacz Protokół internetowy (TCP/IP) i kliknij przycisk
Właściwości. W kolejnym kroku w zakładce Ogólne okna Właściwości kliknij przycisk
Zaawansowane i wybierz zakładkę Opcje. Następnie w polu
Ustawienia opcjonalne zaznacz Filtrowanie TCP/IP i kliknij przycisk
Właściwości. W ostatnim kroku zaznacz pole wyboru Włącz filtrowanie i wprowadź kryteria filtrowania.
Nasuwa się tylko jeden logiczny powód, dla którego opcje filtrowania
TCP/IP są tak ukryte w systemie. W gruncie rzeczy ta usługa jest
bezużyteczna. Bez możliwości filtrowania adresów IP jej przydatność
jest znikoma i ogranicza się w praktyce do zablokowania wszystkich
portów z podanymi wyjątkami. Filtr protokołów również jest nic nie
warty, ponieważ praktycznie cały ruch sieciowy odbywa się po
protokołach TCP, UDP i ICMP. Jeśli je zablokujesz - sam nie będziesz
mógł korzystać z Internetu. Zamiast filtrowania TCP/IP bezpieczniej
jest użyć wbudowanej Zapory połączenia internetowego.
IP Security (IPSec)
IPSec stanowi dobry mechanizm bezpieczeństwa. Potrafi kontrolować ruch
przychodzący i wychodzący, a na podstawie modelu filtrowania konkretne
połączenie może zostać zablokowane, przepuszczone, uwierzytelnione, zaszyfrowane
lub uwierzytelnione i zaszyfrowane jednocześnie. W odróżnieniu od kontroli TCP/IP, w której podaje się tylko dozwolone
lub blokowane adresy IP, IPSec negocjuje bezpieczne połączenie między
komputerami. Konsola zabezpieczeń lokalnych, w której można
zainstalować przystawkę IPSec jest dostępna wyłącznie w systemie
Windows XP Professional i uruchamia się ją z wiersza polecenia (mmc). IPSec
najlepiej sprawdza się w dużych sieciach o wielkiej ilości ważnych
danych, np. w systemach korporacyjnych i bankowych, dlatego nie skupimy
się na instalacji i konfiguracji tego narzędzia.
Wyłączanie zbędnych usług
W Windows XP domyślnie uruchomionych jest mnóstwo usług. Większość
uruchamia się automatycznie wraz z systemem. Zamykając niepotrzebne
usługi możemy zwiększyć nie tylko bezpieczeństwo, ale także wydajność
komputera. Konsola zarządzania usługami dostępna jest z Panelu sterowania. Wybierz Narzędzia administracyjne
(kategoria Wydajność i konserwacja) i kliknij ikonę Usługi.

Uruchomione usługi poznamy po kolumnie Stan. Kolumna Typ uruchomienia
określa sposób, w jaki włączane będą usługi. Automatyczny - wraz z
systemem, Ręczny - tylko wtedy gdy wymagać jej będzie jakiś program,
Wyłączony - usługa nie zostanie uruchomiona nawet, gdy będzie wymagana
przez program. Większość usług można dowolnie włączać i wyłączać.
Ale! Zanim w dzikim szale rzucisz się do wyłączania każdej usługi po
kolei pamiętaj - wyłączenie usługi niezbędnej dla systemu spowoduje
niemożność jego uruchomienia.
Usługi, które bezpiecznie możesz wyłączyć, to:
- ClipBook - jeżeli nie posiadasz aplikacji ClipBook Viewer
- Usługa raportowania błędów - jeżeli nie chcesz, by Windows wysyłał
do Microsoftu informacji i awariach systemu i aplikacji, wyłącz ją
następująco: wejdź w Panel Sterowania, System, Zaawansowane, Raportowanie
błędów i przełącz opcję na Wyłącz raportowanie błędów.
- Publikowanie za pomocą usługi FTP - dla bezpieczeństwa wyłącz tę usługę, chyba, że naprawdę jej potrzebujesz.
- NetMeeting Remote Desktop Sharing - Udostępnia pulpit w programie
NetMeeting. Jeżeli go nie używasz lub nie chcesz udostępniać w nim
pulpitu - wyłącz.
- DSDM DDE sieci
- Menedżer autopołączenia zdalnego dostępu - wyłącz, jeżeli nie używasz modemu.
- Menedżer sesji pomocy pulpitu zdalnego - wyłącz, jeżeli nie korzystasz z pomocy zdalnej.
- Rejestr Zdalny - dla większego bezpieczeństwa wyłącz tę usługę.
- Magazyn wymienny - praktycznie nieużywana usługa.
- Routing i dostęp zdalny
- Simple Mail Transfer Protocol - wyłącz, jeżeli nie posiadasz na komputerze serwera pocztowego
- Telnet
Inne usługi warto pozostawić w ich domyślnym ustawieniu. Dobrym
zwyczajem jest uprzednie przełączenie usługi na tryb ręczny,
popracowanie na komputerze parę dni i wyłączenie usługi dopiero, gdy
nie stwierdziło się nienormalnego zachowania systemu.