Eu tenho alguma dúvida no fechamento do porto, acho que tenho algumas coisas estranhas.
Quando eu uso execute
nmap --top-ports 10 192.168.1.1
mostra que a porta 23 / TCP está aberta.
Mas quando eu executo
nmap --top-ports 10 localhost
mostra que a porta 23 / tcp está fechada.
Qual deles é verdadeiro? Quero fechar esta porta em todo o meu sistema, como posso fazer isso?
localhost
está acessando alo
interface (loopback). o endereço IP está acessando sua interface real, provavelmenteeth0
ou algo assimwlan0
.Respostas:
O Nmap é um excelente scanner de portas, mas às vezes você quer algo mais autoritário. Você pode perguntar ao kernel quais processos possuem quais portas abrem usando o
netstat
utilitário:As opções que eu dei são:
-t
Apenas TCP-l
Apenas portas de escuta-n
Não procure nomes de serviço e host, apenas exiba números-p
Mostrar informações do processo (requer privilégio root)Nesse caso, podemos ver que
sshd
está escutando em qualquer0.0.0.0
porta de interface ( ) 22 ecupsd
está escutando na127.0.0.1
porta 631 de loopback ( ). Sua saída pode mostrar quetelnetd
possui um endereço local de192.168.1.1:23
, o que significa que não responderá às conexões no adaptador de loopback (por exemplo, você não podetelnet 127.0.0.1
).Existem outras ferramentas que mostrarão informações semelhantes (por exemplo,
lsof
ou/proc
), mas o netstat é o mais amplamente disponível. Até funciona no Windows (netstat -anb
). O BSD netstat é um pouco diferente: você terá que usar o sockstat (1) para obter as informações do processo.Depois de ter o ID do processo e o nome do programa, você poderá encontrar o processo e eliminá-lo se desejar fechar a porta. Para um controle mais refinado, você pode usar um firewall (iptables no Linux) para limitar o acesso a apenas determinados endereços. Pode ser necessário desativar uma inicialização do serviço. Se o PID é "-" no Linux, provavelmente é um processo do kernel (isso é comum no NFS, por exemplo), então boa sorte é descobrir o que é.
Nota: Eu disse "autoritário" porque você não está sendo prejudicado pelas condições da rede e pelos firewalls. Se você confia no seu computador, isso é ótimo. No entanto, se você suspeitar que foi invadido, talvez não consiga confiar nas ferramentas do seu computador. Substituir utilitários padrão (e às vezes até chamadas de sistema) por outros que ocultam determinados processos ou portas (também conhecido como rootkits) é uma prática padrão entre os invasores. Sua melhor aposta neste momento é fazer uma cópia forense do seu disco e restaurar do backup; em seguida, use a cópia para determinar como eles entraram e fechá-la.
fonte
Um sistema Linux possui uma interface de loopback, que é para comunicação interna. O nome do host é
localhost
e o endereço IP é127.0.0.1
.Quando você executa ,
nmap
nalocalhost
verdade você executa o portscan na interface de loopback virtual .192.168.1.1
é o endereço IP da sua interface física (provavelmenteeth0
).Então você rodou
nmap
em duas interfaces de rede diferentes, é por isso que há uma diferença nas portas abertas. Ambos são verdadeiros.Se você tiver a porta TCP 23 aberta, é provável que você tenha um
telnet
servidor em execução (o que não é bom devido à falta de criptografia) ou que você tenha algum tipo de cavalo de Troia em sua máquina.fonte
iptables
regra, como sugere uma resposta próxima, mas manterá o serviço sem uso, o que consome recursos. Portanto, se você estivertelnetd
executando, desligue-o.Para "fechar" a porta, você pode usar
iptables
fonte
DROP
, como diz, ele vê o pacote e depois o ignora. Normalmente (sem o iptables ativado), o kernel envia um pacote inacessível da porta ICMP de volta (que pode ser simulado com oREJECT
destino em vez deDROP
).REJECT
destino por escrito-j REJECT --reject-with tcp-reset
.Se você o fizer
nmap localhost
, ele informará sobre uma situação diferente: alguns programas no linux funcionam como servidor, embora sejam usados apenas localmente. Isso ocorre porque outros programas os usam como um servidor ao qual eles se conectam. Portanto, as duas respostas são verdadeiras, pois você pergunta algo diferente.A porta 23 é usada para telnet. Normalmente não é mais usado. Tente fazer
nmap -sV 192.168.1.1
para descobrir qual programa abre a porta.(192 ... é um IP de rede local, portanto, o resultado de
nmap <your outside world IP>
também fornecerá um resultado diferente, devido a possíveis configurações de firewall etc.)fonte
Se você tem um serviço em execução e escuta na porta 23, é mais fácil parar o processo que escuta a porta 23 (provavelmente
telnet
) do que mantê-lo em execução e fechar ou bloquear a porta 23iptables
.Quando não há processo escutando uma porta, mesmo na ausência de um bloco de firewall, qualquer tentativa de conexão com ela deve resultar em uma "conexão recusada" imediata (
ECONNREFUSED
paraconnect(2)
)Uma maneira de encontrar o processo (e seu pid) que escuta na porta 23, se houver, é:
Nas
-i
listas acima, abra portas da Internet (UDP e TCP) e -P inibe a conversão de portas em nomes de serviço (via/etc/services
)Depois de encontrar o processo em execução escutando na porta 23, você pode descobrir como ele começou olhando a árvore de processos (por exemplo,
pstree
). Se o pai dela forinit
(muito provável), você poderá procurar recursivamente o nome do processo em/etc
. por exemplo:Isso deve levar você à melhor maneira de impedir que ele seja executado em primeiro lugar.
fonte
sudo lsof -Pi :23
.23
) seja correspondida. Se você não incluir um espaço depois:23
que ele corresponder:234
,:2345
etc.lsof -Pi :23
) procura uma correspondência exata.