1.2 网络科普时刻
想正确地配置网络环境,维护系统安全,需要了解一些基本的网络知识,比如主机、IP地址、协议和端口等。网络是一个非常宽泛的话题,本节虽然没有详尽地介绍所有的网络知识,但是对于学习和配置Linux网络,解决网络基本问题并保护网络连接还是够用的。
难度:★★
1.2.1 不可不知的网络专用术语
当两台或多台计算机通过某种连接进行通信时,就会形成一个网络。网络的连接方式可以通过不同的技术创建,比如以太网、光纤和无线技术等。加入网络的每台计算机都被称为主机(host),比如台式计算机、笔记本(即笔记本电脑)、打印机、路由器甚至手机。
数据在网络上传输时是通过网络数据包(Net work Packet)完成的。网络数据包是一种预先定义好的消息结构体,包括数据和元数据,也叫包头(Packet Header)。包头中有目的地信息,包括目标主机的IP地址和端口。
放在网络数据包中的数据必须以接收方能够理解的格式存在。这就需要用到协议(Protocol),它是两个主机之间定义好的网络通信标准。
广域网和局域网
网络通常分为局域网(Local Area Network, LAN)和广域网(Wide Area Network, WAN)两种类型,示例如图1-5所示。局域网由同一网络中直接通信的主机构成,广域网由通过路由器或交换机等进行通信的LAN组成。从某种意义上来讲,每个城市相当于LAN,整个国家甚至是全世界相当于WAN。
图1-5 局域网和广域网
路由器和交换机可以将网络通信从一个网络传输到另一个网络中。
1.2.2 关于IP的小知识
IP地址指的是互联网协议地址,网络上每一台计算机的IP地址都是唯一的。IP地址有两种不同的版本,即IPv4和IPv6。最先出现的版本是IPv4,随着互联网的迅速发展,计算机用户增多,IPv4定义的有限地址迟早会被使用完,因此新增了IPv6,扩大了地址空间。
IPv6通常被认为更安全,但是如果在连接网络的系统上使用该地址,网络数据包有可能会被转换成IPv4数据包。IPv6提供的安全功能通常只在组织内部生效。
现在还没有完全切换到IPv6的原因有很多,这里主要介绍两点。一是将整个网络从IPv4切换到IPv6并不是一件简单的事情;二是随着NAT(网络地址转换)技术的应用,消除了人们对IPv4不够用的担忧。IPv4仍然是目前上网使用的主要协议地址。
IPv4和IPv6的区别
IPv4和IPv6有许多不同之处,这里列出了一些主要的区别,如表1-1所示。表中虽然不是IPv4和IPv6的全部差异,但是也让我们明白了IPv6是相对更先进的。
表1-1 IPv4和IPv6的区别
通过NAT技术,路由器只需要一个能在因特网(Internet)上通信的IPv4地址即可。路由器连接到的LAN使用另一组IP地址(私有IP地址)。私有IP地址不能在网络上直接使用,通过NAT技术可以让局域网中的主机间接访问外部网络。
IPv4地址的分类
IPv4地址由4个以点分隔的十进制数字组成(比如192.168.100.25),每个数字表示一个8位字节。IPv4地址被分成5个类别,如表1-2所示。每一个类别由IP地址的第一个数字决定。
表1-2 IPv4地址分类
1.2.3 网络端口和协议
服务与端口的映射关系一般保存在/etc/services文件中。不过,大多数服务在配置文件中都有一个配置项,用于表示该服务将要使用的实际端口。
协议是一种通信标准,比如Web服务器通常使用HTTP作为客户端与服务器之间的通信标准。服务器可以支持多个协议,比如Web服务器还可以使用FTP和HTTPS等协议。协议用于从网络的更高层次定义网络操作。
常用的网络端口
我们需要了解一些常见的端口以及对应的服务,如表1-3所示。
表1-3 常用网络端口
常用的协议
除了常见的端口和服务,一些重要的协议也需要我们了解,如表1-4所示。这些协议是网络安全中比较重要的协议簇。
表1-4 常用的协议
1.2.4 基本的网络加固
基本的网络加固不需要额外的软件或复杂的设置,主要是操作哪些主机之间可以相互通信。不过在实际操作中,定义安全防火墙规则和网络安全总体策略有时会变得复杂。
在进行网络加固时,可以采用最小权限原则。在设置防火墙规则时,默认先阻止所有的流量,然后添加防火墙规则以便允许需要的访问。
虽然防火墙规则会保护网络避免未经授权的访问,但是对于中间人(MITM)攻击,防火墙作用不大。通常攻击者会在传递数据之前修改数据以便隐藏攻击行为。缓解MITM攻击的最简单方法之一是在网络通信中使用TLS(安全传输层协议)。TLS使用网络流量加密和服务器身份验证来阻止MITM攻击。这样攻击者将无法看到客户端与服务器端之间的秘密和数据。
TLS身份验证
使用TLS时,客户端会对服务器进行身份验证,然后启用加密会话。服务器向客户端提供由客户端具备合法登录信息人的签名证书,如图1-6所示。TLS也允许服务器对客户端进行身份验证,不过这种做法不太常见。
图1-6 TLS身份验证
我们还可以在更高级别的安全设置中看到客户端身份验证。