Nowe posty

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

Offline 1709

  • Users
  • Guru
  • *****
  • Wiadomości: 2269
  • 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 »
Pochwal się swoją kartą graficzną w tym wątku-->
http://forum.linux.pl/index.php/topic,19841.msg121122.html#msg121122

Offline Andrzej J

  • Users
  • Guru
  • *****
  • Wiadomości: 706
    • 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.