Nowe posty

xx Dystrybucja pod HP Omen (6)
Wczoraj o 23:30:08
xx [Poradnik] Wyszukiwanie Sterowników (2)
Wczoraj o 21:08:23
lamp Problem z Linux Lite po instalacji (0)
Wczoraj o 19:50:30
xx Ile pingwinów? (1)
Wczoraj o 08:59:24
xx konfiguracja pale moon (0)
2024-03-24, 21:53:42
xx Plasma 6 w Neonie ssie trochę mniej ... (10)
2024-03-23, 02:38:11
xx problem z instalacja sterowników do karty sieciowej (3)
2024-03-18, 18:10:16
xx Plik abc.001 (1)
2024-03-17, 17:48:27
xx Zlecę dopracowanie programu w MatLab (0)
2024-03-13, 15:28:40
xx Linux Mint 21.3 XFCE brak dźwieku po paru minutach (karta muzyczna zintegrowana) (5)
2024-03-12, 23:07:01

Autor Wątek: Sprawdzanie otwartych portów.  (Przeczytany 3072 razy)

Offline 1709

  • Users
  • Guru
  • *****
  • Wiadomości: 2763
  • 1709
    • Zobacz profil
Sprawdzanie otwartych portów.
« dnia: 2019-11-30, 02:44:09 »
Jak sprawdzić otwarte porty?

Często w poradnikach widzę porady typu
- użyj netstat
- użyj nmap

Ale w większości przypadków te porady są nie pełne lub nie aktualne.
A z takimi poradami niestety na pewno spotka się początkujący użytkownik który prawdopodobnie nie będzie drążył tematu.
Dlatego postanowiłem chociaż tutaj wspomnieć parę słów.


1. USŁUGI.
Komenda netstat służy miedzy innymi do zobaczenia które aplikacje "nasłuchują"
Przykłady:
Cytuj
# netstat -tulgpn | grep "LISTEN"
tcp         0      0 127.0.0.53:53           0.0.0.0:*               LISTEN      786/systemd-resolve
tcp         0      0 127.0.0.1:631           0.0.0.0:*               LISTEN      809/cupsd          
tcp6       0      0 ::1:631                      :::*                        LISTEN      809/cupsd

Cytuj
# lsof -nP -i tcp -i udp | grep "LISTEN"
systemd-r  786 systemd-resolve   13u  IPv4   21574      0t0  TCP 127.0.0.53:53 (LISTEN)
cupsd      809            root    7u  IPv6   24353      0t0  TCP [::1]:631 (LISTEN)
cupsd      809            root    8u  IPv4   24354      0t0  TCP 127.0.0.1:631 (LISTEN)

Cytuj
# ss -autpn -o state listening
Netid      Recv-Q       Send-Q               Local Address:Port               Peer Address:Port                                                       
tcp          0                 128                     127.0.0.53%lo:53                      0.0.0.0:*           users:(("systemd-resolve",pid=786,fd=13))       
tcp          0                 5                         127.0.0.1:631                            0.0.0.0:*           users:(("cupsd",pid=809,fd=8))                 
tcp          0                 5                         [::1]:631                                     [::]:*                 users:(("cupsd",pid=809,fd=7))

Taką aplikację nasłuchującą / czekającą na komendy / polecenia zazwyczaj nazywamy serwerem.
Taką aplikację można sprawdzić do jakiego pakietu należy
Cytuj
# ps aux | egrep '[c]upsd'
root       809  0.0  0.1 106096 12604 ?          Ss   08:45   0:00 /usr/sbin/cupsd -l
root     18265  0.0  0.1 118364 12240 ?        Ss   22:58   0:00 cupsd -C etc/cups/cupsd.conf -s /etc/cups/cups-files.conf

# dpkg -S /usr/sbin/cupsd
cups-daemon: /usr/sbin/cupsd
Zamiast komendy dpkg może występować inna, w zależności od używanej dystrybucji Linux-a.
W dystrybucjach opartych o pakiety .deb używa się komendy dpkg.

Wspomniałem wyżej o usługach nasłuchujących, ponieważ sam w sobie otwarty port nie świadczy o niebezpieczeństwie.
Musi wystąpić np.
Nasłuchująca usługa --> podatność w usłudze --> otwarty port .
A jako że niektórzy "eksperci" uważają że napisanie bezpiecznej aplikacji jest bardzo trudne i jej testowanie wymaga dodatkowego czasu,
już nie mówiąc o podatnościach sprzętowych,
więc trzeba się liczyć z tym że korzystanie z internetu nigdy nie było i być może nigdy nie będzie w 100% bezpieczne.
Dlatego jeśli to możliwe, starajmy się wyłączać zbędne usługi i zamykać zbędne otwarte porty.

2. OTWARTE PORTY.
A) Musimy sprawdzić jakie mamy IP zewnętrzne.
W tym pomogą nam zewnętrzne serwisy. Wystarczy w wyszukiwarkę wpisać " moje ip " i któreś z serwisów powinno je pokazać.
Jeśli ktoś musi przez terminal, to wpisz w wyszukiwarkę  " linux how get external IP from command "
a znajdziesz to co szukasz. A jak dobrze poszukasz to znajdziesz całą masę serwisów pokazującą IP zewnętrzne.

B) Musimy sprawdzić IP naszego komputera
Przykład:
# hostname -I
192.168.1.2
Często jest także używana komenda np. " ifconfig "
( przy czym należy wiedzieć że lo: to połączenie lokalne w systemie które nas teraz nie interesuje i IP jest zaraz po słowie "inet" lub "inet6" dla IPv6 ),
lub inne komendy rzadziej używane które znalazłem w sieci
" ip route list ",
" ip -s -c -h a ",
" ip route show | grep src | awk '{print $9}' ",
" ifconfig | grep -Eo 'inet (addr:)?([0-9]*\.){3}[0-9]*' | grep -Eo '([0-9]*\.){3}[0-9]*' | grep -v '127.0.0.1' "
" ip route get 1 | awk '{print $7;exit}' "

Numer IP to jest taki adres dzięki któremu komputer lub inne urządzenie wie gdzie wysyłać dane.

Jeśli IP komputera i zewnętrzne jest identyczne to skanujemy porty tylko raz.
Ja mam jeszcze router w trybie router który pełni rolę dodatkowej zapory internetowej,
więc będę musiał przeskanować IP routera od strony zewnętrznej (od strony internetu) zwanym IP publicznym lub zewnętrznym i IP komputera.

Do sprawdzania otwartych portów najczęściej używa się komendy nmap.
Poradnik zazwyczaj napisze że należy wpisać " nmap numer_IP " , przykładowo
Cytuj
# nmap  192.168.1.2

Starting Nmap 7.60 ( https://nmap.org ) at 2019-11-30 01:47 CET
Nmap scan report for localhost (192.168.1.2)
Host is up (0.000018s latency).
Not shown: 999 closed ports
PORT    STATE SERVICE
631/tcp open  ipp

Nmap done: 1 IP address (1 host up) scanned in 1.70 seconds
Ale spostrzegawczy użytkownik zauważy coś dziwnego. Tylko 999 portów?
Jeśli wpiszesz w wyszukiwarkę " Port protokołu " i zobaczysz na wiki, to przeczytasz że teoretycznie portów powinno być  0 do 65535.
No właśnie nmap często domyślnie skanuje tylko 1000 pierwszych portów.
Skoro jest jak jest, to wątpię by dyskusja nad tym czy powinno tak być miała sens, zwłaszcza że to wygląda na celowy zabieg, więc skupmy się na tym jak sprawdzić wszystkie porty.
Za komendą można podać zakres portów
Cytuj
# nmap -p0-65535 192.168.1.2

Starting Nmap 7.60 ( https://nmap.org ) at 2019-11-30 02:05 CET
Nmap scan report for localhost (192.168.1.2)
Host is up (0.000018s latency).
Not shown: 65535 closed ports
PORT    STATE SERVICE
631/tcp open  ipp

Nmap done: 1 IP address (1 host up) scanned in 7.62 seconds
W przypadku skanowania routera, skanowanie zajęło mi kilka godzin.
Klikając na klawiaturze przycisk "Enter", można zobaczyć procent % ukończonego procesu skanowania.

Możesz nawet spróbować
nmap -sU -sT -p0-65535 Twoje_IP

I tu taka mała prośba.
Gdyby w przypadku twojego routera okazało by się że, pomimo wyłączonych kompletnie wszystkich usług ( np. serwer czasu, serwer email, itd. )
posiada on otwarte porty, lub gdy znajdziesz inną niezbyt bezpieczną funkcję lub podatność i gdy nie możesz nic z tym zrobić,
 to proszę
- gdy router jest na gwarancji, spytaj / poproś producenta żeby coś z tym zrobił jeśli jest to możliwe
- a gdy nie można nic z tym zrobić, to następnym razem gdy będziesz kupował router, kup bezpieczniejszy lub kup / sprawdź innej firmy.

Jeżeli nie wiesz co danej komendy, dana opcja robi to możesz zobaczyć / przeczytać
man nazwa_komendy 
nazwa_komendy --help
« Ostatnia zmiana: 2019-11-30, 11:48:39 wysłana przez 1709 »
PS: Brak polskiej czcionki, nie jest to brak lenistwa, a jej brak w systemie i brak czasu na reczne poprawki.

Offline Andrzej J

  • Users
  • Guru
  • *****
  • Wiadomości: 713
    • Zobacz profil
Odp: Sprawdzanie otwartych portów.
« Odpowiedź #1 dnia: 2019-12-01, 16:09:40 »
Ja od wieków korzystam ze strony https://www.grc.com/intro.htm
i wiem co jest otwarte,zamknięte,nasłuchuje.

Offline 1709

  • Users
  • Guru
  • *****
  • Wiadomości: 2763
  • 1709
    • Zobacz profil
Odp: Sprawdzanie otwartych portów.
« Odpowiedź #2 dnia: 2021-05-02, 11:56:43 »
Ciekawostka:
Może nie dotyczy to otwartych portów, ale też fajne

Komenda pokazuje nazwy aplikacji które łączą się z internetem

# lsof -i :0-65535
COMMAND    PID    USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
NetworkMa 1128    root   22u  IPv4  36089      0t0  UDP user:bootpc->router:bootps
netdata   1526 netdata    4u  IPv4  35421      0t0  TCP localhost:19999 (LISTEN)
netdata   1526 netdata   44u  IPv4  37219      0t0  UDP localhost:8125
netdata   1526 netdata   45u  IPv4  37220      0t0  TCP localhost:8125 (LISTEN)
firefox   2224    user    3u  IPv4 232586      0t0  TCP user:46036->server-13-32-16-46.r.cloudfront.net:https (ESTABLISHED)
firefox   2224    user   39u  IPv4 266493      0t0  TCP user:33222->200.114.177.156:https (ESTABLISHED)

Może warto wspomnieć, że jeśli szukamy wirusów to może być złudne, ponieważ wirus może próbować użyć dowolnej aplikacji do łączenia się z internetem.
Bardziej to może się przydać początkującym użytkownikom i administratorom którzy lubią wiedzieć co w systemie piszczy.
Może to być takim uzupełnieniem informacji zdobytych przy pomocy komendy tcpdump
lub czymś co może przypominać informacje które daje zapora internetowa OpenSnitch.
PS: Brak polskiej czcionki, nie jest to brak lenistwa, a jej brak w systemie i brak czasu na reczne poprawki.

Offline Paweł Kraszewski

  • Administrator
  • Guru
  • *****
  • Wiadomości: 3049
  • Lenistwo jest matką potrzeby = babcią wynalazku
    • Zobacz profil
Odp: Sprawdzanie otwartych portów.
« Odpowiedź #3 dnia: 2021-05-02, 21:18:54 »
Ja od zawsze używam:

* ss -nOlputw - do wyświetlania portów na nasłuchu
* ss -nOputw - do wyświetlania akywnych połączeń
Paweł Kraszewski
~Arch/Void/Gentoo/FreeBSD/OpenBSD/Specjalizowane customy