如何在Linux 中配置IPTables? [分步指南2021]

如何在Linux 中配置IPTables? [分步指南2021]

IPTables 是在Linux 上通过命令行运行的防火墙系统的名称。该程序主要作为Ubuntu上的默认实用程序提供管理员经常使用IPTables 防火墙来允许或阻止流量进入他们的网络。

如果您是IPTables 的新手,那么您需要做的第一件事就是使用以下命令更新或安装它:

$ sudo apt-get install iptables

虽然不熟悉命令行界面的用户发现IPTables 有一个学习曲线,但该实用程序本身非常简单易用。有一系列核心命令可以作为控制流量的基础。话虽如此,您在更改IPTables 规则时需要非常小心。输入错误的命令可能会将您完全锁定在IPTables 之外,直到您解决物理机内的问题。

在本文中,我们将为您提供IPTables 的基本指南,并向您介绍基础知识。在我们进入IPTables 的核心之前,你需要确保你有一个运行Ubuntu 16.04VPA和一个带有SSH 客户端的 本地机器如果您已经拥有这些,那么是时候开始了。

IPTables 教程:链

在IPTables 中要掌握的基本概念之一是链的概念。链本质上是一个规则。过滤器的表具有您在IPTables 上会遇到的三个链;进口转发 和输出

    • INPUT  – INPUT 链是控制传入数据包的规则。您可以在此处阻止或允许新连接。您可以根据端口、协议和源IP 地址执行此操作。
  • 前锋  – FORWARD 链过滤正在转发到不同终端位置的传入数据包。除非您正在路由或专门寻找转发,否则您不太可能使用此链。
  • OUTPUT  – OUTPUT 链用于管理传出数据包和连接。请务必注意,如果您p​​ing 外部主机,则输入链将用于将数据返回给您。

默认链行为

您可能希望在开始时直接进入配置特定规则,但您需要先后退一步来定义默认行为。要确定链的默认行为是什么,您需要运行以下命令:

$ sudo iptables -L command

这将显示以下内容:

user@ubuntu:~$ sudo iptables -L -v 
链输入(政策接受) 
Chain FORWARD (policy ACCEPT) 
Chain OUTPUT (policy ACCEPT) 
user@ubuntu:~$

此信息准确地告诉您链的配置目的。在示例中,输入、转发和输出链已配置为接受流量。这些设置是一个很好的起点,因为它们不会阻止您可能想要的任何连接。

相关问题  有用的Linux 终端命令[2021 年你必须记住]

但是,如果您发现您的策略不接受连接,那么您可以输入以下每个命令来接受所有连接:

$ sudo iptables —policy INPUT ACCEPT
$ sudo iptables —policy OUTPUT ACCEPT
$ sudo iptables —policy FORWARD ACCEPT

一旦您的默认设置接受所有连接,您就可以通过阻止IP 地址和端口号来控制对IPTables 的访问。这允许您指定要阻止的连接,而不是默认阻止所有连接。

如果您正在处理特别敏感的信息,那么您可以将默认设置配置为自动阻止所有连接。通过这种方式,您可以使用IPTables 来选择您想要允许的单个IP 地址。为此,您需要输入以下命令:

$ sudo iptables —policy INPUT DROP
$ sudo iptables —policy OUTPUT DROP
$ sudo iptables —policy FORWARD DROP

大多数用户最好接受所有连接,但如果您在高安全性服务器上工作,则值得记住。

配置单个连接

配置默认链行为后,就可以配置单个连接了。这是您配置所谓的连接特定响应的地方。这实质上是告诉IPTables 在连接到IP 地址或端口时如何进行交互。这些回应如下;接受放弃拒绝

正如您在上图中所看到的,用户已经定义了链规则来根据要求允许、丢弃或拒绝连接。以下是对每个响应所包含的内容的描述:

  • 接受 – 此配置仅允许进行连接。
  • 下降  – Drop 阻止连接,而不以任何方式与源交互。
  • 拒绝  – 这会阻止尝试的连接,但也会发送错误消息。这通常是为了通知源连接尝试已被防火墙阻止。

如何允许或阻止连接

根据您的设置,有许多不同的方法可以阻止或允许连接。下面的示例使用隐蔽阻塞方法,即使用下降 断开连接而无需任何交互。 iptables -A 允许我们向默认链设置建立的规则添加额外的警告。您将在下面看到如何使用此命令来阻止连接:

阻止单个IP 地址:

$ sudo iptables -A INPUT -S 10.10.10.10 -j DROP

在上面的示例中,您可以将10.10.10.10 替换为要阻止的IP 地址。

相关问题  如何在Linux上禁用ipv6(2021年循序渐进指南)

阻止一系列IP 地址:

$ sudo iptables -A INPUT -s 10.10.10.10.0/24 -j DROP    

或者

$ sudo iptables -A INPUT -s 10.10.10.0/255.255.255/.0 -j DROP

阻塞单个端口:

$ sudo iptables -A INPUT -p tcp —dport ssh -s 10.10.10.10 -j DROP 

请注意,'ssh 可以替换为任何协议或端口号。同样需要注意的是,代码的-p tcp 段用于表示您要阻止的协议是使用UDP 还是TCP。

如果协议使用UDP,那么您将输入-p udp而不是-p TCP您还可以通过输入以下命令来阻止来自IP 地址的所有连接:

$ sudo iptables -A INPUT -p tcp —dport ssh -jDROP

双向通信:连接状态IPTables 教程

您遇到的大多数协议都需要双向通信才能进行传输。这意味着传输由输入和输出组成。进入您系统的内容与输出的内容一样重要。连接状态允许您在双向连接和单向连接之间混合和匹配。在下面的示例中,SSH 协议阻止了来自IP 地址的SSH 连接,但允许连接到IP 地址:

$ sudo iptables -A INPUT -p tcp —dport ssh -s 10.10.10.10 -m state —state NEW, ESTABLISHED -j ACCEPT 

$ sudo iptables -A OUTPUT -p tcp —sport 22 -d 10.10.10.10。-m state —state ESTABLISHED -J ACCEPT

输入更改连接状态的命令后,您需要保存更改。如果您不这样做,那么当您关闭该实用程序时,您的配置将会丢失。根据您使用的分发系统,您可以使用许多不同的命令:

相关问题  如何使用BackInTime 备份Linux PC

Ubuntu

$ sudo /sbin/iptables-save

红帽/ CentOS –

$ sudo /sbin/service iptables save

或者

$ sudo /etc/init.d/iptables save

记住使用这些命令非常重要,因为它可以消除每次加载实用程序时都必须进行配置的麻烦。

删除规则

与能够保存规则同样重要的是能够删除它们。如果您犯了错误或只是想消除旧规则,则可以使用选项– D 嘴巴此命令需要与您输入的规则编号结合使用。该数字告诉IPTables 要删除哪个规则。例如,如果您要输入:

$ sudo iptables -D INPUT 10

那么您配置的第10 条规则将被删除。

如果您想清理房屋并删除一系列规则,则可以使用-F 命令您可以通过输入以下内容来执行此操作:

$ sudo iptables -F

这将清除整个规则集并刷新您的IPTable。

IPTables:学习链规则!

我们的IPTables 教程到此结束。如您所见,IPTables 是一种用于阻止和允许Linux发行版上的流量的多功能工具有效地使用该实用程序涉及有效地设置默认配置并在此基础上构建其他规则。默认配置将允许您概述允许或拒绝流量的广泛流量意图;这些规则将允许您根据IP 地址、端口和协议来构建您的方法。

我们只是触及了IPTables 潜力的皮毛,您可以使用大量不同的命令来决定如何体验服务器上的流量。但是,我们建议您在开始使用其他命令之前先了解基础知识。例如,在致力于任何更专业的事情之前,您需要先了解基本的链规则。

一旦您习惯了IPTables 的工作方式,您就可以开始整合更多规则来定制您的体验。通过这样做,您将能够以比以往更高的精度准确指定您将允许的连接类型。

哦,您好 👋很高兴认识你。

订阅我们的电子报,定期发送很棒的科技内到您的邮

发表评论