Mam jakieś pytanie w zamykaniu portu, myślę, że mam dziwne rzeczy.
Kiedy używam wykonać
nmap --top-ports 10 192.168.1.1
pokazuje, że port 23 / TCP jest otwarty.
Ale kiedy wykonam
nmap --top-ports 10 localhost
pokazuje, że port 23 / tcp jest zamknięty.
Które z nich jest prawdziwe? Chcę zamknąć ten port w całym systemie, jak mogę to zrobić?
localhost
uzyskuje dostęp dolo
interfejsu (sprzężenia zwrotnego). Adres IP jest accesing swój prawdziwy interfejs, prawdopodobnieeth0
lubwlan0
lub somesuch.Odpowiedzi:
Nmap to świetny skaner portów, ale czasem potrzebujesz czegoś bardziej autorytatywnego. Możesz zapytać jądro, jakie procesy mają otwarte porty, używając
netstat
narzędzia:Dostępne opcje to:
-t
Tylko TCP-l
Tylko porty nasłuchiwania-n
Nie szukaj nazw usług i hostów, po prostu wyświetlaj numery-p
Pokaż informacje o procesie (wymaga uprawnień roota)W tym przypadku widzimy, że
sshd
nasłuchuje na dowolnym0.0.0.0
porcie 22 interfejsu icupsd
nasłuchuje na127.0.0.1
porcie 631 pętli zwrotnej. Twój wynik może wskazywać, żetelnetd
ma lokalny adres192.168.1.1:23
, co oznacza, że nie będzie odpowiadał na połączenia na adapterze pętli zwrotnej (np. nie możesztelnet 127.0.0.1
).Istnieją inne narzędzia, które pokażą podobne informacje (np.
lsof
Lub/proc
), ale netstat jest najbardziej dostępny. Działa nawet w systemie Windows (netstat -anb
). BSD netstat jest trochę inny: będziesz musiał użyć sockstat (1), aby uzyskać informacje o procesie.Po uzyskaniu identyfikatora procesu i nazwy programu możesz przejść do znajdowania procesu i zabijania go, jeśli chcesz zamknąć port. Aby uzyskać bardziej szczegółową kontrolę, możesz użyć zapory ogniowej (iptables w systemie Linux), aby ograniczyć dostęp tylko do niektórych adresów. Może być konieczne wyłączenie uruchamiania usługi. Jeśli PID ma „-” w Linuksie, prawdopodobnie jest to proces jądra (jest to na przykład typowe dla NFS), więc powodzenia w znalezieniu tego, co to jest.
Uwaga: Powiedziałem „autorytatywny”, ponieważ nie przeszkadzają ci warunki sieciowe i zapory ogniowe. Jeśli ufasz swojemu komputerowi, to świetnie. Jeśli jednak podejrzewasz, że zostałeś włamany, możesz nie być w stanie zaufać narzędziom na swoim komputerze. Zastąpienie standardowych narzędzi (a czasem nawet wywołań systemowych) narzędziami, które ukrywają określone procesy lub porty (inaczej rootkity), jest standardową praktyką wśród atakujących. Najlepszym rozwiązaniem w tym momencie jest wykonanie kryminalistycznej kopii dysku i przywrócenie jej z kopii zapasowej; następnie użyj kopii, aby określić sposób, w jaki się dostali i zamknąć.
źródło
System Linux ma tak zwany interfejs pętli zwrotnej, który służy do komunikacji wewnętrznej. Jego nazwa hosta to
localhost
i adres IP127.0.0.1
.Po uruchomieniu
nmap
nalocalhost
, to rzeczywiście uruchomić PortScan na wirtualnym interfejsu pętli zwrotnej.192.168.1.1
to adres IP twojego fizycznego (najprawdopodobniejeth0
) interfejsu.Więc korzystasz
nmap
z dwóch różnych interfejsów sieciowych, dlatego jest różnica w otwartych portach. Oba są prawdziwe.Jeśli masz otwarty port TCP 23, prawdopodobnie masz
telnet
uruchomiony serwer (co nie jest dobre ze względu na brak szyfrowania) lub masz na swoim komputerze konia trojańskiego.źródło
iptables
regułę, jak sugeruje odpowiedź w pobliżu, ale spowoduje to, że usługa będzie nieużywana, co zużywa zasoby. Więc jeśli masztelnetd
bieg, po prostu go wyłącz.Aby „zamknąć” port, którego można użyć
iptables
źródło
DROP
robi tak, jak mówi, widzi pakiet, a następnie go ignoruje. Zwykle (bez włączonego iptables) jądro odsyła nieosiągalny pakiet portu ICMP z powrotem (REJECT
zamiast tego można symulować z celemDROP
).REJECT
docelowego przez zapis-j REJECT --reject-with tcp-reset
.Jeśli to zrobisz
nmap localhost
, powie ci o innej sytuacji: niektóre programy na Linuksie działają jako serwer, chociaż są używane tylko lokalnie. Jest tak, ponieważ inne programy używają ich jak serwera, z którym się łączą. Obie odpowiedzi są prawdziwe, ponieważ pytasz o coś innego.Port 23 służy do telnet. Zwykle nie jest już używany. Spróbuj zrobić,
nmap -sV 192.168.1.1
aby dowiedzieć się, który program otwiera port.(192 ... to adres IP sieci lokalnej, więc wynik
nmap <your outside world IP>
da również inny wynik, ze względu na możliwe ustawienia zapory itp.)źródło
Jeśli masz usługę działającą i nasłuchującą na porcie 23, jest prawdopodobnie czystsze, aby zatrzymać proces nasłuchujący na porcie 23 (prawdopodobnie
telnet
) niż utrzymać go w działaniu i zamknąć lub zablokować korzystanie z portu 23iptables
.Gdy na porcie nie ma procesu nasłuchującego, nawet przy braku bloku zapory, każda próba połączenia się z nim powinna skutkować natychmiastowym „odrzuceniem połączenia” (
ECONNREFUSED
doconnect(2)
)Jednym ze sposobów znalezienia procesu (i jego pid), który nasłuchuje na porcie 23, jeśli taki proces jest, jest:
Na powyższych
-i
listach otwarte porty internetowe (zarówno UDP, jak i TCP), a -P hamuje translację portów na nazwy usług (przez/etc/services
)Po znalezieniu działającego procesu nasłuchującego na porcie 23 możesz dowiedzieć się, jak się zaczął, patrząc na drzewo procesów (powiedzmy,
pstree
). Jeśli jego rodzic jestinit
(bardzo prawdopodobne), możesz rekurencyjnie wyszukać nazwę procesu w/etc
. na przykład:Powinno to doprowadzić Cię do najlepszego sposobu, aby wyłączyć go z pierwszego miejsca.
źródło
sudo lsof -Pi :23
.23
dopasowany jest tylko port Telnet ( ). Jeśli nie zawierać spacji za:23
to odpowiadają:234
,:2345
itplsof -Pi :23
) szuka dokładnego dopasowania.