介绍
设置好的防火墙是确保任何现代操作系统安全的必要步骤。 大多数Linux发行版附带几种不同的防火墙工具,我们可以用它们来配置我们的防火墙。 在本指南中,我们将覆盖iptables
防火墙。
iptables的是包括在大多数Linux发行版默认情况下,标准的防火墙(现代变种,叫nftables
将开始取代它)。 它实际上是内核级netfilter钩子的前端,可以操纵Linux网络栈。 它通过匹配跨越网络接口的每个分组与一组规则来决定要做什么来工作。
在本指南中,我们将讨论iptables如何工作。 在本系列的下一篇文章中,我们将向您展示如何配置一套基本的规则来保护你的Ubuntu 14.04服务器 。
Iptables如何工作
在我们开始讨论控制iptables和构建防火墙策略所需的实际命令之前,让我们先讨论一些术语,并讨论iptables如何工作。
在iptables防火墙通过对一组规则比较网络流量进行操作。 规则定义了数据包必须匹配规则的特性,以及匹配数据包应采取的操作。
有很多选项来确定哪些数据包匹配特定的规则。 您可以匹配数据包协议类型,源或目标地址或端口,正在使用的接口,其与以前的数据包的关系等。
当所定义的模式相匹配,即发生的动作被称为目标 。 目标可以是分组的最终策略决定,例如接受或丢弃。 它也可以将包移动到不同的链进行处理,或者只是记录遇到的情况。 有很多选择。
这些规则被组织成所谓的连锁集团。 链是一组规则,顺序检查数据包。 当数据包匹配其中一个规则时,它执行相关的操作,不会根据链中的其余规则进行检查。
用户可以根据需要创建链。 默认情况下定义了三个链。 他们是:
- 输入 :此链处理寻址到服务器的所有数据包。
- OUTPUT:这个链包含您的服务器创建交通规则。
- 前锋 :这个链用来处理目的地是不是你的服务器上创建其他服务器的流量。 这个链基本上是一种配置您的服务器将请求路由到其他机器的方法。
每条链可以包含零个或多个规则,并且具有默认策略 。 策略确定当数据包通过链中的所有规则并且不匹配任何规则时将发生什么。 如果没有匹配的规则,您可以删除数据包或接受数据包。
通过可以通过规则加载的模块,iptables还可以跟踪连接。 这意味着您可以创建规则,根据它与以前数据包的关系定义数据包发生了什么。 我们称之为“状态跟踪”,“连接跟踪”或配置“状态机”。
对于本指南,我们主要将涵盖INPUT链的配置,因为它包含一组规则,这些规则将帮助我们拒绝指向我们的服务器的不必要的流量。
IPv4与IPv6
Linux内核中包含的netfilter防火墙保持IPv4和IPv6流量完全独立。 同样,用于操作包含防火墙规则集的表的工具也是不同的。 如果在服务器上启用了IPv6,则必须配置这两个表,以便满足服务器所承受的流量。
常规iptables
命令用于处理含支配IPv4流量的规则表。 对于IPv6流量,叫同伴命令ip6tables
使用。 这是内化很重要的一点,因为它意味着你有设置任何规则iptables
会对使用的协议的版本6的数据包没有影响。
这两个命令之间的语法是相同的,因此为每个表创建一个规则集不是太重要。 只要记住在进行更改时修改这两个表。 在iptables
命令将适用于IPv4流量的规则,和ip6tables
命令将适用于IPv6流量的规则。
你一定要确保使用服务器的相应IPv6地址手艺的ip6tables
规则。
事情保持在心中
现在我们知道iptables如何定向通过其接口发送的数据包(将数据包导向适当的链,检查每个规则,直到匹配,发出链的默认策略,如果没有找到匹配),我们可以开始看到在我们制定规则时要注意一些缺陷。
首先,我们需要确保我们有规则,如果我们实现默认丢弃策略,保持当前连接活动。 如果您通过SSH连接到服务器,这一点尤其重要。 如果您不小心实施了删除当前连接的规则或策略,则可以随时使用提供带外访问权限的Web控制台登录您的DigitalOcean VPS。
要记住的另一件事是在每个链问题的规则的顺序。 如果要匹配更具体的规则,则数据包不得涉及匹配的更一般的规则。
正因为如此,在链的顶部附近的规则应该比在底部的规则具有更高的特异性水平。 您应该首先匹配特定的案例,然后提供更一般的规则来匹配更广泛的模式。 如果数据包落在通过整个链(不匹配任何规则),这将创下最一般的规律,默认的策略。
出于这个原因,链的默认策略非常强烈地决定将被包括在链中的规则的类型。 具有默认策略ACCEPT的链将包含明确丢弃数据包的规则。 默认为DROP的链将包含应明确接受的数据包的异常。
结论
在这一点上,了解iptables如何工作的最简单的方法是使用它来实现自己的防火墙。
在接下来的指南中,我们将展示如何在Ubuntu 14.04创建一个基本的iptables防火墙 。 这将锁定您的服务器,除了您想要允许的少数服务。