问题发生背景:
新接手一个系统需要对系统文档要有一个大致了解,在短时间内需要对开启的端口有一个清晰的认识,这个端口是做什么用的,是否是非法开启的端口,自己要心中有数否则被未知的木马通过某个陌生的端口给黑掉就尴尬了。因此作为运维人员需要对公司的每台机器开放的端口有一个清晰的认识,同时要具备面对陌生的端口怎么去判断这个端口对应怎样的服务,该服务是否非法等的能力。
一、端口概念
在网络技术中,端口(Port)大致有两种意思:
一是物理意义上的端口,比如,ADSL Modem、集线器、交换机、路由器用于连接其他网络设备的接口,如RJ-45端口、SC端口等等。二是逻辑意义上的端口,一般是指TCP/IP协议中的端口,端口号的范围从0到65535,比如用于浏览网页服务的80端口,用于FTP服务的21端口等等。
二、网络端口的分类
按端口号可分为3大类:
(1)公认端口(Well-KnownPorts):范围从0到1023
(2)动态端口(Dynamic Ports):范围从1024到65535
(2.1)注册端口(RegisteredPorts):从1024到49151
(2.2)动态和/或私有端口(Dynamicand/orPrivatePorts)::从49152到65535。
linux:
1)根据端口看目前哪些端口是开放的命令
a、netstat -ntlp |grep port
b、nmap 127.0.0.1 查看service是unknown的一般为我们专有应用端口。
c、ss -tnl 显示所有tcp已被监听的端口
2)端口确认进程 lsof -i:端口 显示所有打开该端口的进程
3)看进程路径:用ps -ef |grep xxxxx 得到该进程的pid
输入ls -l /proc/pid ,结果中exe链接对应的就是可执行文件的路径
windows:
1)查看端口 cmd下输入netstat -nao|findstr port
2)查看进程 tasklist |findstr pid
3)查看路径 wmic process where name='pname'
另,接手一个新系统,主要从几个方面考虑:
1、重启操作系统,确保应用正常后,基本可确保机器上应用都开启了。
2、在服务器上确认自启动脚本,自启动服务及计划任务。
3、根据自启动脚本,自启动服务等确认程序路径,配置路径,数据路径,日志路径。
4、根据根据配置或端口连接确认系统数据流图。
5、确认系统数据流及拓扑后,核实及优化应急方案。