linux查看监听端口(转载)

以下是来源

http://www.eygle.com/digest/2006/11/linux_port_checking.html

http://blog.csdn.net/pengchua/article/details/4890779

=================================================================

如果只想查特定端口的监听如80端口,则

netstat-anp|grep80

=================================================================

配置了网络服务之后,关注一下哪些端口在监听系统的网络接口这一点很重要。任何打开的端口都可能是入侵的证明。

要列举正在监听网络的端口,有两种基本方法。一种不太可靠的方法是通过键入netstat-an或lsof-i之类的命令来查询网络堆栈。这种方法之所以不太可靠是因为这些程序不连接网络上的机器,而是查看系统上在运行什么。因此,它们频繁成为攻击者的替换目标。怪客在打开了未经授权的网络端口后,就以这种方法来企图掩盖他们的踪迹。

更可靠的方法是使用nmap之类的端口扫描器来检查哪些端口正在监听网络。

以下从控制台发出的命令会判定哪些端口在监听来自网络上的TCP连接:

nmap-sT-Olocalhost

该命令的输出和以下相似:

StartingnmapV.3.00(www.insecure.org/nmap/)Interestingportsonlocalhost.localdomain(127.0.0.1):(The1596portsscannedbutnotshownbelowareinstate:closed)PortStateService22/tcpopenssh111/tcpopensunrpc515/tcpopenprinter834/tcpopenunknown6000/tcpopenX11RemoteOSguesses:LinuxKernel2.4.0orGentoo1.2Linux2.4.19rc1-rc7)

Nmapruncompleted--1IPaddress(1hostup)scannedin5seconds

该输出显示了由于sunrpc服务的存在,系统正在运行portmap。然而,端口834上还有一个神秘服务。要查看一下该端口是否和任何已知服务相关,键入:

cat/etc/services|grep834

该命令没有返回任何输出。这表明虽然该端口是在保留范围内(即从0到1023内),并且需要根权限才能打开,它并没有关联任何已知服务。

下一步,检查使用netstat或lsof的端口的信息。要使用netstat检查端口834,使用以下命令:

netstat-anp|grep834

该命令返回以下输出:

tcp000.0.0.0:8340.0.0.0:*LISTEN653/ypbind

这个开放端口在netstat中存在,这一点比较令人安慰,因为如果怪客在被攻击的系统上暗中打开一个端口,他们很可能不会让这个端口使用该命令被暴露出来。还有,[p]选项揭示了打开这个端口的进程id(PID)。在这个例子中,被打开的端口属于ypbind(NIS),这是和portmap服务一起进行的RPC服务。

lsof命令揭示了相似的信息,因为它也能够链接开放端口和服务:

lsof-i|grep834

以下是这个命令中和讨论有关的输出部分:

ypbind65307uIPv41319TCP*:834(LISTEN)

ypbind65507uIPv41319TCP*:834(LISTEN)

ypbind65607uIPv41319TCP*:834(LISTEN)

ypbind65707uIPv41319TCP*:834(LISTEN)

这些工具揭示了大量关于运行在机器上的服务状态的信息。它们很灵活,能够提供关于网络服务和配置的许多信息。强烈推荐你阅读lsof、netstat、nmap和services的说明书页。

-TheEnd-

=====================================

netstat的常用参数:-t、-u、-w和-x分别表示TCP、UDP、RAW和UNIX套接字连接。-a标记,还会显示出等待连接(也就是说处于监听模式)的套接字。-l显示正在被监听(listen)的端口,-n表示直接显示端口数字而不是通过察看/etc/service来转换为端口名,-p选项表示列出监听的程序

1)netstat-tl

查看当前tcp监听端口

ActiveInternetconnections(onlyservers)

ProtoRecv-QSend-QLocalAddressForeignAddressState

tcp00*:rrac*:*LISTEN

tcp00*:34006*:*LISTEN

......

2)netstat-tlp

查看当前tcp监听端口,需要显示监听的程序名,当不清楚mysql的监听端口时比较好用

ActiveInternetconnections(onlyservers)

ProtoRecv-QSend-QLocalAddressForeignAddressStatePID/Programname

tcp00*:rrac*:*LISTEN-

tcp00*:34006*:*LISTEN23425/mysqld

......

3)netstat-tl|grep34006

只查看mysql的监听端口,当前启动的mysql端口为34006,明确知道mysql监听端口时使用

4)netstat-ta|grep34006

tcp00*:34006*:*LISTEN

tcp00linux.local:34006linux.local:41485ESTABLISHED

tcp00linux.local:34006linux.local:41486ESTABLISHED

...

tcp0010.3.2.35:4148810.3.2.35:34006ESTABLISHED

tcp0010.3.2.35:4148910.3.2.35:34006ESTABLISHED

tcp0010.3.2.35:4149010.3.2.35:34006ESTABLISHED

由于数据库和运用程序都放在同一台机器了,因此这里连接被显示了两次.可以使用-p参数来显示PID,然后grepPID.

5)netstat-tap|grep34006|grep23425

23425是当前mysql的PID

tcp00*:34006*:*LISTEN23425/mysqld

tcp00linux.local:34006linux.local:41510ESTABLISHED23425/mysqld

tcp00linux.local:34006linux.local:41511ESTABLISHED23425/mysqld

tcp00linux.local:34006linux.local:41516ESTABLISHED23425/mysqld

相关推荐