我对关闭端口有一些疑问,我想我遇到了一些奇怪的事情。
当我使用执行
nmap --top-ports 10 192.168.1.1
Run Code Online (Sandbox Code Playgroud)
它显示 23/TCP 端口已打开。
但是当我执行
nmap --top-ports 10 localhost
Run Code Online (Sandbox Code Playgroud)
它显示 23/tcp 端口已关闭。
其中哪一个是真的?我想在我的整个系统上关闭这个端口,我该怎么做?
bon*_*ing 50
Nmap 是一个很棒的端口扫描器,但有时您需要更权威的东西。您可以使用该netstat
实用程序询问内核哪些进程打开了哪些端口:
me@myhost:~$ sudo netstat -tlnp 活动 Internet 连接(仅限服务器) Proto Recv-Q Send-Q 本地地址外地址状态PID/程序名称 tcp 0 0 127.0.0.1:53 0.0.0.0:* 听 1004/dnsmasq tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 380/sshd tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN 822/cupsd tcp6 0 0 :::22 :::* LISTEN 380/sshd tcp6 0 0 ::1:631 :::* LISTEN 822/cupsd
我给出的选项是:
-t
仅 TCP-l
仅侦听端口-n
不查找服务和主机名,只显示数字-p
显示进程信息(需要root权限)在这种情况下,我们可以看到它sshd
正在侦听任何接口 ( 0.0.0.0
) 端口 22,并且cupsd
正在侦听环回 ( 127.0.0.1
) 端口 631。您的输出可能会显示它telnetd
的本地地址为192.168.1.1:23
,这意味着它不会响应环回适配器上的连接(例如你不能telnet 127.0.0.1
)。
还有其他工具可以显示类似的信息(例如lsof
或/proc
),但 netstat 是最广泛可用的。它甚至适用于 Windows ( netstat -anb
)。BSD netstat 有点不同:您必须使用sockstat(1)来获取进程信息。
获得进程 ID 和程序名称后,如果您想关闭端口,就可以开始查找进程并杀死它。对于更细粒度的控制,您可以使用防火墙(Linux 上的 iptables)来限制对某些地址的访问。您可能需要禁用服务启动。如果 PID 在 Linux 上为“-”,则它可能是内核进程(例如,这在 NFS 中很常见),所以祝你好运找出它是什么。
注意:我说“权威”是因为您不受网络条件和防火墙的阻碍。如果您信任您的计算机,那就太好了。但是,如果您怀疑自己遭到了黑客攻击,则可能无法信任计算机上的工具。将标准实用程序(有时甚至是系统调用)替换为隐藏某些进程或端口(又名 rootkit)的实用程序是攻击者的标准做法。此时最好的办法是制作磁盘的取证副本并从备份中恢复;然后使用副本来确定他们进入的方式并将其关闭。
Cre*_*eek 15
要“关闭”您可以使用的端口 iptables
sudo iptables -A INPUT -p tcp --dport 23 -m state --state NEW,ESTABLISHED -j DROP
Run Code Online (Sandbox Code Playgroud)
psi*_*mon 14
Linux 系统有一个所谓的环回接口,用于内部通信。它的主机名是localhost
,它的 IP 地址是127.0.0.1
。
当您运行nmap
on 时localhost
,您实际上是在虚拟环回接口上运行端口扫描。192.168.1.1
是您的物理(最有可能eth0
)接口的 IP 地址。
所以你nmap
在两个不同的网络接口上运行,这就是开放端口不同的原因。他们都是真的。
如果您打开了 TCP 端口 23,则很可能您的telnet
服务器正在运行(由于缺乏加密,这不是一件好事)或者您的机器上有某种特洛伊木马。
归档时间: |
|
查看次数: |
139405 次 |
最近记录: |