Linux 之端口监听

主要用到的命令:netstat, nmap

两者的区别如下:

l  netstat:在本机上面以自己的程序监测自己的 port;

l  nmap:透过网络的侦测软件辅助,可侦测非本机上的其他网络主机。

 

1、  netstat的常规用法:

1.1          列出正在监听的网络端口:

[root@www ~]# netstat -tunl

ctive Internet connections (only servers)

Proto Recv-Q Send-Q Local Address    Foreign Address    State

tcp        0      0 0.0.0.0:111      0.0.0.0:*          LISTEN

tcp        0      0 0.0.0.0:22       0.0.0.0:*          LISTEN

tcp        0      0 127.0.0.1:25     0.0.0.0:*          LISTEN

....(底下省略)....

上面说明我的主机至少启动了111、22和25等端口,而25端口只针对 lo 内部循环测试网络提供服务,因特网是连不到该埠口的。

1.2         列出已经连接的网络端口:

[root@www ~]# netstat -tun

Active Internet connections (w/o servers)

Proto Recv-Q Send-Q Local Address       Foreign Address     State

tcp        0     52 192.168.1.100:22    192.168.1.101: 56746 ESTABLISHED

从上面的数据来看,我的本地端服务器 (Local Address, 192.168.1.100) 目前仅有一条已建立的联机,那就是与 192.168.1.101 那部主机连接的联机,并且联机方线是由对方连接到我主机的 port 22 来取用我服务器的服务吶!

1.3         删除已建立连接或监听中的连接:

如果想要将已经建立,或者是正在监听当中的网络服务关闭的话,最简单的方法当然就是找出该联机的 PID, 然后将他 kill 掉即可啊!例如下面的范例:

[root@www ~]# netstat -tunp

Active Internet connections (w/o servers)

Proto Recv-Q Send-Q Local Address    Foreign Address     State       PID/P name

tcp        0     52 192.168.1.100:22 192.168.1.101:56746  ESTABLISHED 1342/0

如上面的范例,我们可以找出来该联机是由 sshd 这个程序来启用的,并且他的 PID 是 1342, 希望你不要心急的用 killall 这个指令,否则容易删错人 (因为你的主机里面可能会有多个 sshd 存在), 应该要使用 kill 这个指令才对喔!

 

2、  NMAP的使用:

如果你要侦测的设备并没有可让你登入的操作系统时,那该怎么办?举例来说,你想要了解一下公司的网络打印机是否有开放某些协议时, 那该如何处理啊?现在你知道 netstat 可以用来查阅本机上面的许多监听中的通讯协议, 那例如网络打印机这样的非本机的设备,要如何查询啊?呵呵!用 nmap 就对了!

[root@www ~]# nmap [扫瞄类型] [扫瞄参数] [hosts 地址与范围]

选项与参数:

[扫瞄类型]:主要的扫瞄类型有底下几种:

    -sT:扫瞄 TCP 封包已建立的联机 connect() !

    -sS:扫瞄 TCP 封包带有 SYN 卷标的数据

    -sP:以 ping 的方式进行扫瞄

    -sU:以 UDP 的封包格式进行扫瞄

    -sO:以 IP 的协议 (protocol) 进行主机的扫瞄

[扫瞄参数]:主要的扫瞄参数有几种:

    -PT:使用 TCP 里头的 ping 的方式来进行扫瞄,可以获知目前有几部计算机存活(较常用)

    -PI:使用实际的 ping (带有 ICMP 封包的) 来进行扫瞄

    -p :这个是 port range ,例如 1024-, 80-1023, 30000-60000 等等的使用方式

[Hosts 地址与范围]:这个有趣多了,有几种类似的类型

    192.168.1.100  :直接写入 HOST IP 而已,仅检查一部;

    192.168.1.0/24 :为 C Class 的型态,

    192.168.*.*  :嘿嘿!则变为 B Class 的型态了!扫瞄的范围变广了!

    192.168.1.0-50,60-100,103,200 :这种是变形的主机范围啦!很好用吧!

# 范例一:使用预设参数扫瞄本机所启用的 port (只会扫瞄 TCP)

[root@www ~]# yum install nmap

[root@www ~]# nmap localhost

PORT    STATE SERVICE

22/tcp  open  ssh

25/tcp  open  smtp

111/tcp open  rpcbind

# 在预设的情况下,nmap 仅会扫瞄 TCP 的协议喔!

nmap 的用法很简单吶!就直接在指令后面接上 IP 或者是主机名即可。不过,在预设的情况下 nmap 仅会帮你分析 TCP 这个通讯协议而已,像上面这个例子的输出结果。但优点是顺道也将开启该埠口的服务也列出来了, 真是好! ^_^!那如果想要同时分析 TCP/UDP 这两个常见的通讯协议呢?可以这样做:

# 范例二:同时扫瞄本机的 TCP/UDP 埠口

[root@www ~]# nmap -sTU localhost

Starting Nmap 5.51 ( http://nmap.org ) at 2013-02-23 14:39 CST

Nmap scan report for localhost (127.0.0.1)

Host is up (0.00098s latency).

Other addresses for localhost (not scanned): 127.0.0.1

Not shown: 1990 closed ports

PORT     STATE         SERVICE

22/tcp   open          ssh

25/tcp   open          smtp

80/tcp   open          http

111/tcp  open          rpcbind

631/tcp  open          ipp

3306/tcp open          mysql

9000/tcp open          cslistener

111/udp  open          rpcbind

631/udp  open|filtered ipp

5353/udp open|filtered zeroconf

与前面的范例比较一下,你会发现这次多了几个 UDP 的埠口,这样分析好多了!然后, 如果你想要了解一下到底有几部主机活在你的网络当中时,则可以这样做:

# 范例三:透过 ICMP 封包的检测,分析区网内有几部主机是启动的

[root@www ~]# nmap -sP 192.168.1.0/24

Starting Nmap 5.21 ( http://nmap.org ) at 2011-07-20 17:05 CST

Nmap scan report for www.centos.vbird (192.168.1.100)

Host is up.

Nmap scan report for 192.168.1.101 <==这三行讲的是 192.168.101 的范例!

Host is up (0.00024s latency).

MAC Address: 00:1B:FC:58:9A:BB (Asustek Computer)

Nmap scan report for 192.168.1.254

Host is up (0.00026s latency).

MAC Address: 00:0C:6E:85:D5:69 (Asustek Computer)

Nmap done: 256 IP addresses (3 hosts up) scanned in 3.81 seconds

看到否?我的环境当中有三部主机活着 (Host is up)!并且该 IP 所对应的 MAC 也会被记录下来

你可能感兴趣的:(linux运维)