Tengo alguna pregunta al cerrar el puerto, creo que tengo algunas cosas extrañas.
Cuando uso ejecutar
nmap --top-ports 10 192.168.1.1
muestra que el puerto 23 / TCP está abierto.
Pero cuando ejecuto
nmap --top-ports 10 localhost
muestra que el puerto 23 / tcp está cerrado.
¿Cuál de ellos es cierto? Quiero cerrar este puerto en todo mi sistema, ¿cómo puedo hacerlo?

localhostestá accediendo a lalointerfaz (loopback). La dirección IP es accesando su verdadera interfaz, probablemente,eth0owlan0, o algo por el estilo.Respuestas:
Nmap es un excelente escáner de puertos, pero a veces quieres algo más autorizado. Puede preguntarle al núcleo qué procesos tienen qué puertos se abren utilizando la
netstatutilidad:Las opciones que he dado son:
-tSolo TCP-lSolo puertos de escucha-nNo busques nombres de servicio y host, solo muestra números-pMostrar información del proceso (requiere privilegio de root)En este caso, podemos ver que
sshdestá escuchando en cualquier0.0.0.0puerto 22 de interfaz ( ) ycupsdestá escuchando en el127.0.0.1puerto 631 de loopback ( ). Su salida puede mostrar quetelnetdtiene una dirección local de192.168.1.1:23, lo que significa que no responderá a las conexiones en el adaptador de loopback (por ejemplo, no puedestelnet 127.0.0.1).Existen otras herramientas que mostrarán información similar (por ejemplo,
lsofo/proc), pero netstat es la más disponible. Incluso funciona en Windows (netstat -anb). BSD netstat es un poco diferente: tendrá que usar sockstat (1) para obtener la información del proceso.Una vez que tenga la ID del proceso y el nombre del programa, puede buscar el proceso y eliminarlo si desea cerrar el puerto. Para un control más detallado, puede usar un firewall (iptables en Linux) para limitar el acceso a solo ciertas direcciones. Es posible que deba deshabilitar el inicio de un servicio. Si el PID es "-" en Linux, es probable que sea un proceso de kernel (esto es común con NFS, por ejemplo), así que buena suerte para descubrir qué es.
Nota: Dije "autorizado" porque las condiciones de la red y los cortafuegos no te obstaculizan. Si confías en tu computadora, eso es genial. Sin embargo, si sospecha que ha sido pirateado, es posible que no pueda confiar en las herramientas de su computadora. Reemplazar las utilidades estándar (y a veces incluso las llamadas al sistema) por otras que ocultan ciertos procesos o puertos (también conocidos como rootkits) es una práctica estándar entre los atacantes. Su mejor apuesta en este momento es hacer una copia forense de su disco y restaurar desde la copia de seguridad; luego use la copia para determinar la forma en que entraron y ciérrela.
fuente
Un sistema Linux tiene una interfaz llamada loopback, que es para comunicación interna. Su nombre de host es
localhosty su dirección IP es127.0.0.1.Cuando se ejecuta
nmapenlocalhost, en realidad se ejecuta el escaneo de puertos en el Virtual interfaz de bucle invertido.192.168.1.1es la dirección IP de su interfaz física (lo más probableeth0).Entonces, se ha ejecutado
nmapen dos interfaces de red diferentes, por eso hay una diferencia en los puertos abiertos. Ambos son verdad.Si tiene abierto el puerto TCP 23, es probable que tenga un
telnetservidor en funcionamiento (lo que no es bueno debido a su falta de cifrado) o que tenga algún tipo de caballo de Troya en su máquina.fuente
iptablesregla como sugiere una respuesta cercana, pero mantendrá el servicio sin usar, lo que consume recursos. Entonces, si tienestelnetdcorriendo, simplemente apágalo.Para "cerrar" el puerto puede usar
iptablesfuente
DROPhace lo que dice, ve el paquete y luego lo ignora. Normalmente (sin iptables habilitado), el núcleo enviaría un paquete ICMP inalcanzable (que puede simularse con elREJECTdestino en lugar deDROP).REJECTobjetivo escribiendo-j REJECT --reject-with tcp-reset.Si lo hace
nmap localhost, le informa sobre una situación diferente: algunos programas en Linux funcionan como servidor, aunque solo se usan localmente. Esto se debe a que otros programas los usan como un servidor al que se conectan. Entonces ambas respuestas son verdaderas, ya que preguntas algo diferente.El puerto 23 se usa para telnet. Normalmente ya no se usa. Intente hacer
nmap -sV 192.168.1.1para averiguar qué programa abre el puerto.(192 ... es una IP de red local, por lo que el resultado
nmap <your outside world IP>también dará un resultado diferente, debido a la posible configuración del firewall, etc.)fuente
Si tiene un servicio ejecutándose y escuchando en el puerto 23, podría decirse que es más limpio detener el proceso que escucha el puerto 23 (probablemente
telnet) que mantenerlo ejecutándose y cerrar o bloquear el puerto 23 usandoiptables.Cuando no hay un proceso escuchando en un puerto, incluso en ausencia de un bloqueo de firewall, cualquier intento de conectarse a él debería resultar en una "conexión rechazada" inmediata (
ECONNREFUSEDaconnect(2))Una forma de encontrar el proceso (y su pid) que escucha en el puerto 23, si existe dicho proceso, es:
En las
-ilistas anteriores , abra los puertos de Internet (tanto UDP como TCP), y -P inhibe la traducción de los puertos a los nombres de servicio (a través de/etc/services)Después de encontrar el proceso en ejecución escuchando en el puerto 23, puede averiguar cómo comenzó mirando el árbol de procesos (con say,
pstree). Si su padre esinit(muy probable), puede buscar recursivamente el nombre del proceso en/etc. p.ej:Esto debería llevarlo a la mejor manera de deshabilitar su ejecución en primer lugar.
fuente
sudo lsof -Pi :23.23) coincida. Si no incluye un espacio después:23, coincidirá:234,:2345etc.lsof -Pi :23) busca una coincidencia exacta.