上网的时候,或者与网工交流的时候,我们经常会看到听到“端口”这个词,也会使用到端口号,比如在FTP地址后面增加的“21”,21就表示端口号。那么端口到底是什么意思呢?从安全角度来说端口是计算机的大门,计算机的安全需要从端口开始建设,或者从一个电脑使用者的角度来说,如果windows登录的账户密码是电脑的大门,那么端口就是电脑的一扇窗,大门上锁了进不去,那么常开的窗是不是可以进去呢?
那么到底啥是端口呢?举个栗子:电脑就像你家的超级大别墅,这个大别墅每时每刻都有好多人进进出出:佣人,粉丝,快递、外卖、朋友、送特供猪肉的农民……混乱无比,于是聪明的你定了个规定,给房子开了很多个门,并且规定每一个来访者要根据自己办的事走不同的门,比如往别墅里送邮件走110号门,往别墅外发邮件到25号门,收发快递走21号门等等。这个门就是我们说的端口。在电脑中一共有65536个(2^16)这样的端口,编号从0~65535。一小部分门已经规定好了用途,大部分是用途待定的门。电脑中确定好功能的端口叫做系统默认端口,比如我们访问http网页,不指定端口默认80端口,访问https网页,不指定端口默认443端口,访问http://www.linemore.com,而不用输入http://www.linemore.com:80。
端口有65536个,其中0 到 1023 之间的端口,又叫公认端口,这是系统保留的具有特定用途的,比如 ftp 的 21、telnet的 21、http 的 80 等,但并不代表这些端口就是固定的,也可以将端口重定向。比如系统默认的HTTP服务是80端口,可以将其重新定向为别的,比如8080。1024 到 65535 之间的端口,大家可以随意设置,不过一些知名度比较高的产品一般默认使用的端口别人也不会去占用,基本上就默认是他们专属的端口了,比如 mysql 的 3306、mssql 的 1433、oracle 的 1521 等。
一些常见端口,IT运维人员都会倒背如流的,比如FTP:21,telnet:23,SMTP:25,DNS:53,http:80,POP3:110,NETBIOS:137-139,https:443,文件夹和打印机的共享服务(SMB):445,MS SQL:1433,oracle:1521,mysql:3306,远程桌面(RDP):3389 等等。
对于运维人员和安全人员来说,端口是网络攻击防守的必争之地。如果坏蛋想进入你的大house,必然会先找到你家大门,然后再想套路破门而入。同样,黑客通常会用扫描器对目标主机进行端口扫描,以确定开放的端口及其端口对应的服务程序,进而猜测可能存在的漏洞,比如开放了1433端口,猜测服务器上可能运行了mssql数据库,然后用常用的用户名字典(如sa)和常用的弱密码字典,尝试登录,如果开放了445端口,同时还是windows2008操作系统,那么黑客一定会先使用永恒之蓝的exp攻击MS017-010漏洞,往往都会得手……接下来就是投毒,加密文件等等一系列的套路。些某端口被攻击得手后,黑客会很容易获得管理员权限,从而对攻击得手的电脑为所欲为,这些端口就是所谓的高危端口。
称职的安全运维人员,需要严格检查服务器的端口开放及连接情况,发现可疑连接和端口状态,从而及时发现异常情况,找到木马或者黑客的连接,当发现服务器上出现不认识的或者感觉异常的端口连接或者处于监听状态,就要分析一下对应的进程,确定是否中了病毒或者被黑客攻击,当然最直接的方法就是彻底关闭高危端口,如果业务系统有特殊要求必须对外网开放,那么建议一定通过专业的具有入侵检测防御功能的防火墙发布,同时服务器部署安全防御的软件,防御内网的攻击。
蓝盟IT外包结合多年的安全运维经验,强烈建议,RDP,SSH,SMB这三种服务对应的高危端口禁止对外网发布,如无必要,就直接关闭服务器系统的上述三种服务,毕竟大部分的勒索病毒的攻击是从内网发起的。管控好高危端口就是向完善的网络安全迈出了踏实的一步。