当前位置:C++技术网 > 精选软件 > 服务器安全防护:6 端口控制的那些事附常见端口号列表

服务器安全防护:6 端口控制的那些事附常见端口号列表

更新时间:2018-12-14 10:48:07浏览次数:1+次

    在前面4讲里,我们已经讲解了源头控制的原理和代码实现,原理部分2篇是在本网站发布,而代码实现则是因为用Python实现所以发布在Python技术网。如果只看原理部分,本文就接第2讲,即“服务器安全防护2-...”。如果看源码实现,则接Python技术网的第4讲即“服务器安全防护4-...”。

    端口是进入计算机的一个入口,所谓一夫当关万夫莫开,也就是入口的重要性的体现。对于端口的相关背景的了解和控制,自然也是非常重要了。


    用通俗易懂的话讲,IP相当于一个地址,我们现实生活中,我们的家都有一个地址,如“北京市XX胡同XX”,也就是门牌号。所以前面将的IP控制,我们是控制别人的门牌号。我们自己的门牌号就是我们自己的服务器的IP地址,我们既然对外开放,就没有办法隐藏。但是我们可以控制别人门牌号。每一个IP来了,也就是从某一家人(某一台计算机)出来的,这一家人允不允许进入我们家里,我可以做一个登记,允许让进,不允许不让进。封闭式的IP控制说的是,我们只将我们家的地址告诉需要告诉的人,而开放式的是告诉所有人。知道的人越少,来我家捣乱的越少,知道的多了,也就只能控制来访的人的来源。如果我们的服务不需要任何人知道,仅自己家使用,那么我们就可以隐藏起来,不对任何人透露。自嗨嘛!
    那什么是端口?我们把IP比喻成一个家一栋楼,那么对于这一栋楼来讲,肯定需要有入口的,不然怎么进去呢?入口可能有几个呢?一扇门或两扇门还有窗户还有狗洞。。。
    所有的口,只要能进到家里去的,都可以称得上是入口,只是优雅和狼狈的问题。我们自己进去的大门,自然是大摇大摆的光明正大的进去的,很优雅。而一些小偷强盗可能是破门而入或者从后门潜入或者从狗洞钻入,那都是不优雅的。反正进去了,都是有效的。
    那么端口,就是进入服务器(计算机)的一个入口。这里需要解释一下,我们这里说的入口,不是说钻到机箱里去的物理上的概念,而是软件上的抽象的概念。别人访问我们的服务器计算机,也都是在他们自己的电脑上操作的。只不过通过端口,和我们的服务器产生了有效的交互,也就是实现了远程访问或者控制。只要是进行了远程交互访问,获取资源或者控制,就是进入了服务器。如果一个服务器什么端口都不开放,软件层面上谁也访问不了的。
    但是这样是不行的,服务器作为提供服务的使命而存在,不开放端口,也就是不想完成使命,我们就没有讨论的价值了。
    端口是服务器安全的一个环节,自然也是很重要的。在开发测试中,我们很多时候可能开放了一些测试端口,便于开发测试人员测试,如果没有意识到隐患,可能一直也没有关闭,而这些端口在内部也没有做好保护,别人就可能通过这个端口访问服务器,然后达到攻击的目的。另外,一些服务器软件也都是会有一些常用的端口会开放的,只要端口开放,或多或少都存在隐患。如果没有必要开放的,我们就不要开放。如果确实
    需要开放,我们也可以将常用的端口换一下数字。毕竟这些常见的端口都是默认的,大家也都知道,也就成为被扫描攻击的对象。如果我们可以更改端口号,让需要的人知道,就可以很大程度上让别人误以为这个服务器并没有开放一些端口,进而就放弃了这方面的攻击。
    所以,总结一下,对于端口,开放的越多,隐患越大。对于测试端口,要及时关闭。没有必要开放的端口,也要及时关闭。对于常见的端口,我们一般称为熟知端口,如果不需要对外开放,我们也要关闭。这些端口通常是一些软件默认开放的,我们需要主动去关闭。对于确实需要开放的熟知端口,我们可以修改端口号为一个不常用的端口号,然后告知需要知道的人,这样也可以很大程度上提高安全性。而对于自己程序要开放的端口,也不要使用容易记的,很简单的,尽量让端口号看起来不好记不简单。另外一点,开放的端口不要连号,否则一扫描全都暴露了。
    我把我们自己程序上开放的端口叫做匿名端口,和熟知端口或叫知名端口相对。不管是匿名端口,还是熟知端口,基本原则是,可不开放不开放,要开放则设置一个不容易被人猜到的端口号,扫描起来也很费劲的。

下面附上常见的端口号列表,具体的意义,请自查:

20 : FTP数据
21 : FTP控制
22 : SSH
23 : TELNET
25 : SMTP
53 : DNS
69 : TFTP
80 : HTTP,常用的还有8080/3128/8081/9080
110 :POP3
161 :SNMP
162 :SNMP(trap)
443 :HTTPS
520 :RIP
1433 :MS SQL微软的数据库
1521 :Oracle数据库
3306 :MySQL数据库
3389 :RDP远程桌面
5432 :PostgreSQL
6379 :Redis