Wstęp
Każda usługa webowa jest dostępna w internecie poprzez specjalny URL, który reprezentuje pewnego rodzaju “nazwę zamienną” do identyfikacji adresu IP i portu, na których usługa jest dostępna. Ta sama maszyna może oferować różne usługi na odrębnych portach w tym samym czasie.
Ze względów bezpieczeństwa może być niezbędne maskowanie numeru portu dla usługi webowej, co oznacza udostępnianie numeru portu na zewnątrz, który nie odpowiada numerowi, na którym usługa nasłuchuje.
Niniejszy poradnik przedstawi sposób zarządzania portami na serwerze, poprzez konfigurację UFW firewall zintegrowanym z Ubuntu. Postępując zgodnie z instrukcją w poradniku nauczysz się przekazywania zapytań przychodzących z danego portu na inny port, na którym wykorzystywana jest usługa.
Obecnie na serwerze nie znajduje się żadna usługa na porcie 70. Z drugiej strony, na porcie 8600 istnieje aktywna usługa, więc wykorzystamy podane porty dla przykładu w naszym poradniku.
Celem poradnika będzie konfiguracja UFW w celu umożliwienia użytkownikom łączenia z portem 70. W odpowiedzi uzyskają oni dostęp do usługi na porcie 8600.
Wymagania
W celu przetestowania przykładu będziesz potrzebować:
- Serwer Linux Ubuntu 18.04;
- UFW, który jest domyślnie zainstalowany na Ubuntu (o ile nie został odinstalowany).
Połącz się ze swoim serwerem przez SSH. Jeśli jeszcze tego nie zrobiłeś, zapoznaj się z naszym poradnikiem na temat bezpiecznego połącznie przez protokół SSH. W przypadku serwera lokalnego przejdź do następnego kroku i otwórz terminal na swoim serwerze.
Konfiguracja UFW Firewall
Standardowo nie istnieją komendy, które pozwalają na przekierowywanie portów, czyli przekierowywanie ruchu przychodzącego na dany port na inny przez siebie wybrany. Istnieje jednak możliwość odpowiedniej edycji zasad konfiguracji, na których bazuje UTW - podstawowa aplikacja do konfiguracji firewall na Ubuntu.
W pierwszej kolejności upewnij się, że port docelowy jest aktywowany dla ruchu TCP. W przeciwnym razie UFW zablokuje wszelkie zapytania przychodzące na ten port. Skorzystaj z komendy:
$ sudo ufw allow port_number/tcp
Uwaga: Zastąp 'port_number' numerem portu docelowego, na który chcesz przekierowywać ruch.
Tak jak wcześniej wspomnieliśmy, nie istnieje komenda do wprowadzenia pożądanych efektów. Manualnie edytuj plik konfiguracyjny UFW w lokalizacji „/etc/ufw/before.rules”:
$ cd /etc/ufw
$ sudo nano before.rules
Przed sekcją * filter wprowadź poniższe instrukcje, modyfikując odpowiednio parametry „exposed_port” i „effective_port” kolejno na port, który będzie przyjmował zapytania z zewnątrz oraz port, na którym standardowo nasłuchuje docelowa usługa.
*nat
:PREROUTING ACCEPT [0:0]
-A PREROUTING -p tcp --dport exposed_port -j REDIRECT --to-port effective_port
COMMIT
Zrzut poniżej przedstawia przykładową konfigurację, która przekierowuje wszelkie zapytania przychodzące na port 70 na port 8600.
Dodaj reguły dla połączenia SSH i zrestartuj UFW Firewall za pomocą poniższych komend:
$ sudo ufw allow OpenSSH
$ sudo ufw allow in ssh
$ sudo ufw enable
W przypadku wykorzystywania połączenia SSH zostaniesz zapytany czy chcesz kontynuować operację, gdyż wykonanie jej w pewnym momencie zrzuci połączenie. Wprowadź Y i kliknij Enter.
Podsumowanie
W tym momencie wszelki ruch przychodzący na port 70 będzie przekierowywany na port 8600 i odwrotnie.
Zrzut poniżej przedstawia ten sam adres i port jak wcześniej, jednak teraz udostępniana jest usługa, która operuje na porcie 8600.
Operacja może być wykonywana wiele razy i dla różnych usług. Możesz maskować rzeczywisty numer portu w celu zachowania pełnego bezpieczeństwa na serwerze.