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:
# 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
# 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)
# 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
# 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:
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
# 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
# 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ć