J'ai une question dans la fermeture du port, je pense que j'ai des choses étranges.
Quand j'utilise execute
nmap --top-ports 10 192.168.1.1
cela montre que le port 23 / TCP est ouvert.
Mais quand j'exécute
nmap --top-ports 10 localhost
cela montre que le port 23 / tcp est fermé.
Lequel d'entre eux est vrai? Je veux fermer ce port sur tout mon système, comment puis-je le faire?
localhost
accède à l'lo
interface (bouclage). l'adresse IP est accesing votre interface réelle, probablementeth0
ouwlan0
ou somesuch.Réponses:
Nmap est un excellent scanner de ports, mais vous voulez parfois quelque chose de plus autoritaire. Vous pouvez demander au noyau quels processus ont quels ports s'ouvrent en utilisant l'
netstat
utilitaire:Les options que j'ai données sont:
-t
TCP seulement-l
Ports d'écoute uniquement-n
Ne cherchez pas les noms de services et d'hôtes, mais affichez simplement des chiffres-p
Afficher les informations sur le processus (nécessite le privilège root)Dans ce cas, nous pouvons voir qu'il
sshd
écoute sur n'importe quel0.0.0.0
port 22 d' interface ( ) etcupsd
écoute sur le127.0.0.1
port 631 de loopback ( ). Votre sortie peut indiquer quetelnetd
l'adresse locale de est définie192.168.1.1:23
, ce qui signifie qu'elle ne répondra pas aux connexions de l'adaptateur de bouclage. (par exemple, vous ne pouvez pastelnet 127.0.0.1
).Il existe d'autres outils qui affichent des informations similaires (par exemple
lsof
ou/proc
), mais Netstat est le plus largement disponible. Cela fonctionne même sous Windows (netstat -anb
). BSD netstat est un peu différent: vous devrez utiliser sockstat (1) pour obtenir les informations sur le processus.Une fois que vous avez l'ID de processus et le nom du programme, vous pouvez rechercher le processus et le supprimer si vous souhaitez fermer le port. Pour un contrôle plus précis, vous pouvez utiliser un pare-feu (iptables sous Linux) pour limiter l’accès à certaines adresses seulement. Vous devrez peut-être désactiver un démarrage de service. Si le PID est "-" sous Linux, il s’agit probablement d’un processus noyau (il s’agit par exemple de NFS), alors bonne chance pour savoir de quoi il s’agit.
Remarque: j'ai dit "faisant autorité" car vous n'êtes pas gêné par les conditions du réseau et les pare-feu. Si vous faites confiance à votre ordinateur, c'est génial. Toutefois, si vous pensez que vous avez été piraté, vous ne pourrez peut-être pas faire confiance aux outils de votre ordinateur. Remplacer les utilitaires standard (et parfois même les appels système) par des utilitaires masquant certains processus ou ports (ou rootkits) est une pratique courante chez les attaquants. Votre meilleur pari à ce stade est de faire une copie légale de votre disque et de la restaurer à partir d’une sauvegarde; utilisez ensuite la copie pour déterminer la façon dont ils sont entrés et fermez-la.
la source
Un système Linux possède une interface dite de bouclage, destinée aux communications internes. Son nom d'hôte est
localhost
et son adresse IP est127.0.0.1
.Lorsque vous exécutez
nmap
surlocalhost
, vous exécutez réellement le portscan sur la virtuelle interface de réalimentation.192.168.1.1
est l'adresse IP de votre interface physique (le plus probableeth0
).Vous avez donc exécuté
nmap
sur deux interfaces réseau différentes, c’est pourquoi il existe une différence entre les ports ouverts. Ils sont tous les deux vrais.Si vous avez le port TCP 23 ouvert, il est probable qu'un
telnet
serveur soit en cours d'exécution (ce qui n'est pas une bonne chose en raison de son manque de cryptage) ou que vous avez une sorte de cheval de Troie sur votre ordinateur.la source
iptables
règle comme le suggère une réponse à proximité, mais le service restera inutilisé, ce qui consomme des ressources. Donc, si voustelnetd
courez, fermez-le.Pour "fermer" le port, vous pouvez utiliser
iptables
la source
DROP
comme il est dit, il voit le paquet puis l’ignore. Normalement (sans iptables activé), le noyau renvoie un paquet inaccessible au port ICMP (qui peut être simulé avec laREJECT
cible au lieu deDROP
).REJECT
cible en écriture-j REJECT --reject-with tcp-reset
.Si vous le faites
nmap localhost
, cela vous indique une situation différente: certains programmes sous Linux fonctionnent en tant que serveur bien qu'ils ne soient utilisés que localement. En effet, d'autres programmes les utilisent comme un serveur auquel ils se connectent. Donc, les deux réponses sont vraies, puisque vous demandez quelque chose de différent.Le port 23 est utilisé pour telnet. Normalement plus utilisé. Essayez de
nmap -sV 192.168.1.1
savoir quel programme ouvre le port.(192 ... est une adresse IP de réseau local, le résultat de
nmap <your outside world IP>
donnera également un résultat différent, en raison des paramètres de pare-feu possibles, etc.)la source
Si vous avez un service en cours d’exécution et en écoute sur le port 23, il est sans doute plus propre d’ arrêter le processus écoutant le port 23 (probablement
telnet
) que de le maintenir en marche et de le fermer ou de bloquer le port 23 aveciptables
.En l'absence de processus d'écoute sur un port, même en l'absence de blocage du pare-feu, toute tentative de connexion à celui-ci doit aboutir à une "connexion refusée" immédiate (
ECONNREFUSED
àconnect(2)
)Une façon de trouver le processus (et son pid) qui écoute sur le port 23, s’il existe, est la suivante:
Dans les
-i
listes ci - dessus , les ports Internet ouverts (UDP et TCP), et -P empêche la traduction des ports en noms de services (via/etc/services
).Une fois que vous avez trouvé le processus en cours d’écoute sur le port 23, vous pouvez comprendre comment le processus a été lancé en consultant l’arborescence des processus (avec say,
pstree
). Si son parent estinit
(très probablement), vous pouvez rechercher récursivement le nom du processus sous/etc
. par exemple:Cela devrait vous conduire à la meilleure façon de le désactiver de courir à la 1ère place.
la source
sudo lsof -Pi :23
.23
) correspond. Si vous n'incluez pas d'espace après le:23
match:234
,:2345
etc.lsof -Pi :23
) recherche une correspondance exacte.