Chinaunix首页 | 论坛 | 博客
  • 博客访问: 10812339
  • 博文数量: 2905
  • 博客积分: 20098
  • 博客等级: 上将
  • 技术积分: 36298
  • 用 户 组: 普通用户
  • 注册时间: 2009-03-23 05:00
文章存档

2012年(1)

2011年(3)

2009年(2901)

分类: LINUX

2009-03-23 10:57:49

每多开放一个端口就多一份危险,这是肯定的。所以在系统里,一切不必要的端口都得关闭!

查看端口使用情况
# netstat -ant
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address               Foreign Address             State      
tcp        0      0 0.0.0.0:33936                0.0.0.0:*                   LISTEN      
tcp        0      0 127.0.0.1:3306              0.0.0.0:*                   LISTEN      
tcp        0      0 0.0.0.0:111                    0.0.0.0:*                   LISTEN      
tcp        0      0 10.0.0.22:33831            207.46.107.42:1863          ESTABLISHED
tcp        0      0 10.0.0.22:43127             219.133.60.250:80           ESTABLISHED
tcp        0      0 10.0.0.22:42904             58.60.14.191:8000           ESTABLISHED
tcp        0      0 :::111                      :::*                        LISTEN      
tcp        0      0 :::80                       :::*                        LISTEN      
---------------------------------------------------------------------------------------------

那么就从最小的开始吧~
80是我开的,不理它

111呢,不了解~ 好,那就打开/etc/services看下~
sunrpc    rpcbind    111/tcp        portmapper rpcbind    # RPC 4.0 portmapper TCP
sunrpc        111/udp        portmapper rpcbind    # RPC 4.0 portmapper UDP
第一列是服务名,第二列是端口号和协议类型,第三列是别名,第四列,也是就最后一列是注释来的~

到了这里,我假定你和我一样不懂英文。那么我们可以求助,但不是跑到门外大叫一场~
通过google得知,这个端口是RPC(Remote Procedure Call)服务开放的。像我这样用电脑,都是不会或极少(少到什么程序?可能到下次重装系统还是没用到两次)用到的,那不好意思,我得把你给关了~

通过services文件里的内容,我得到了三个关键字:portmapper,rpcbind,RPC
那就到services里找找看~
只找到了个rpcbind,先停了看看情况~

# netstat -ant
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address               Foreign Address             State      
tcp        0      0 127.0.0.1:3306              0.0.0.0:*                   LISTEN      
tcp        0      0 0.0.0.0:33936               0.0.0.0:*                   LISTEN      
tcp        0      0 10.0.0.22:33831             207.46.107.42:1863          ESTABLISHED
tcp        0      0 10.0.0.22:43127             219.133.60.250:80           ESTABLISHED
tcp        0      0 10.0.0.22:42904             58.60.14.191:8000           ESTABLISHED
tcp        0      0 :::80                       :::*                        LISTEN      

OK,确定111端口是由rpcbind服务打开的,禁了就行~
---------------------------------------------------------------------------------------------
3306是mysql的端口,跳过~

33936端口无法在/etc/services中查不到任何信息,那么这个端口就有可能是随机产生的了~
那就看下这个端口是由什么进程使用的,还有就是进程的其它信息,然后顺藤摸瓜,找到“犯人”,达到我们的目的

#netstat -antp
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address               Foreign Address             State       PID/Program name   
tcp        0      0 0.0.0.0:33936               0.0.0.0:*                   LISTEN      1829/rpc.statd          
......

得到的信息太少了,得换一个工具才行~

# lsof -i
COMMAND    PID    USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
rpc.statd 1829 rpcuser    6u  IPv4   7003      0t0  UDP *:733
rpc.statd 1829 rpcuser    8u  IPv4   7010      0t0  UDP *:58417
rpc.statd 1829 rpcuser    9u  IPv4   7013      0t0  TCP *:33936 (LISTEN)
......

通过"lsof -i"命令,又了解到了这个进程是由rpcuser用户启动的~

那好,我们现在得去看下"rpcuser"这个用户的信息了~
#vim /etc/passwd
rpcuser:x:29:29:RPC Service User:/var/lib/nfs:/sbin/nologin

这就可以肯定它与nfs有关系,那我也不会用到,那就把nfs相关的服务都关了吧~(不知道哪些是?google!! )
通过多次的试验,这个是nfslock使用的端口,并且是动态的,也验证了前面的猜想~

小结:
关闭一个使用固定端口的服务,我们可以通过/etc/services(在win下也有services:X:\windows\system32\dirvers\etc\services)查找相关的信息,然后直接关闭服务就行了~

而对于一个使用动态端口的服务,在不了解服务的情况下,我们最先得知的是端口,然后通过了解这个端口是由哪个进程打开的,进一步了解进程的信息,包括进程名,由哪个用户启动的等等,然后顺着这些信息去确定这是一个什么服务。一但确定下来,我们的目的也就达到了~

阅读(832) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~