使用Iptables保护网络安全-代理-NAT-IDS:第1部分

这篇文章试图澄清一些网络工作原理,以及如何将我们的Linux设备变成路由器,以确保我们的网络更多,无论是家庭网络还是企业网络。 因此,让我们开始做生意:

此内容基于《 Linux-系统管理和网络服务操作》-SébastienBOBILLIER

路由和过滤

要讨论和理解路由,我们首先可以定义路由器的功能是什么? 为此,我们可以说,路由器除了创建网络并允许与其他设备连接(知道我们可以使用AP,Switch,Hub或其他设备进行连接)之外,还能够将两个不同的网络相互连接。

路由器

如图所示,路由器创建了一个本地网络“ 10.0.1.0”,并到达其两个接口之一。 然后,路由器在其另一个接口上具有另一个网络,该网络具有可用于连接到Internet的公用IP。 路由功能基本上是充当这两个网络之间的中介,以便它们可以通信。

Linux作为路由器。

自然地,Linux内核已经具有执行“转发”的能力,但是默认情况下它是禁用的,因此,如果我们希望我们的Linux进行此工作,则必须转到该文件。

/proc/sys/net/ipv4/ip_forward

在那里,我们将发现它是一个仅包含零“ 0”的文件,我们必须做的是将其更改为一个“ 1”以激活此行为。 不幸的是,当我们重新启动计算机时,将其删除,要使其默认处于激活状态,我们必须使用以下命令:

sysctl net.ipv4.ip_forward=1

或直接在文件中进行编辑 /etc/sysctl.conf中。 根据分发情况,此配置也可以位于以下位置的文件中:  /etc/sysctl.d/。

默认情况下,我们的Linux必须具有一个路由表,该表通常是我们局域网网络的配置以及与路由器的连接。 如果要查看此路由,可以使用两个命令:

route -n

o

netstat -nr

这两个命令应该返回相同的值。

2014-09-30 18:23:06的屏幕截图

通常,此配置足以使您的Linux充当网关,其他计算机也可以在我们的计算机中导航。 现在,如果我们希望Linux连接两个或多个网络,例如本地或非本地,我们都可以使用静态路由。

假设我的Linux有两个网络接口,第一个具有Internet连接,其网络为172.26.0.0,第二个(10.0.0.0)具有来自另一个本地网络的某些计算机。 如果我们想将数据包路由到另一个网络,我们可以使用:

route add -net 10.0.0.0 netmask 255.0.0.0 gw 172.26.0.8

通常是:

route add -net REDDESTINO netmask MASCARA gw IPDELLINUX

如果我们给 路线-n 无论此网络是否存在,此路由都将在我们的表格中固定。

2014-09-30 18:31:35的屏幕截图

如果我们想消除上述路由,可以使用

route del -net 10.0.0.0 netmask 255.0.0.0

iptables。

基本上iptables用于过滤数据包,传出,传入或其他数据包,这使其成为管理网络流量的理想工具。 好的,iptables,就像它允许我们过滤来自同一台计算机的流量一样,它也允许我们过滤通过它的流量。 (转发)。 iptables可以分为表,字符串和动作。

  • 董事会:  基本上可以有两个表, 过滤, 过滤数据包和  NAT 转换地址,即从一个网络移动到另一个网络。
  • 链条: 链指的是我们要过滤或游动的流量类型,也就是说,我们要将表应用于哪个流量? 他们可以是:  INPUT:传入流量, 输出: 出站流量或 前锋: 通过的流量,但这不是正确的连接。
  • 它也可能出现 引导, 它用于在路由路由之后以某种方式处理数据包。
  • 动作: 动作基本上是链上要执行的动作。 这个动作可以是 DROP, 只会破坏流量或 接受。 允许流量执行该操作。

IPTABLES规则按创建顺序保存和执行,如果规则删除了前一个规则,则始终应用该顺序中的最后一个规则。

防火墙策略。

通常,防火墙自然以两种方式工作:

  1. 允许所有流量,除非,或
  2. 除...以外,不允许任何流量

要应用政策,请使用 IPTABLES-P动作链

其中字符串代表流量类型(INPUT,OUTPUT,FORWARD,POSTROUTING ...),并且操作为DROP或ACCEPT。

让我们来看一个例子。

2014-09-30 18:53:23的屏幕截图

在这里,我们看到起初我能够ping通,然后我告诉IPTABLES所有输出流量都是DROP或不允许。 然后我告诉IPTABLES接受它。

如果我们要从头开始构建防火墙,则必须始终应用以下规则(除...外,不允许任何流量。为此,我们应用规则

iptables -P INPUT DROP iptables -P OUTPUT DROP iptables -P FORWARD DROP
如果应用这些策略,则它们将没有任何类型的连接
.

要返回,我们写相同的内容,并用ACCEPT替换DROP。

此时,由于所有流量都被拒绝,因此我们开始告诉IPTABLES它可以拥有什么流量。

语法为:

iptables -A cadena -s ip_orgigen -d ip_destino -p protocolo --dport puerto -j acción

其中:

字串= 输入,输出或前进

origin_ip =数据包的来源,它可以是单个IP​​或网络,在这种情况下,我们必须指定掩码。

destination_ip =数据包的去向。 (可以是单个IP​​或网络,在这种情况下,我们必须指定掩码)。

协议 =表示数据包使用的协议(icmp,tcp,udp ...)

端口= 流量的目的端口。

行动= 删除或接受。

例如:

2014-09-30 19:26:41的屏幕截图

所有受限政策均适用。

2014-09-30 19:27:42的屏幕截图

然后,我们添加规则,以便能够使用TCP协议通过端口80 HTTP和443 HTTPS进行通信。 然后端口53将其用于DNS客户端解析域,否则您将无法导航。 这适用于udp协议。

该行:

iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

这是由于以下原因:例如,当您发出HTTP请求时,您连接到服务器的端口80,但是要返回信息的服务器需要通过任何端口与您连接。 (通常大于1024)。

由于我们所有的端口都已关闭,除非我们打开所有高于1024的端口(错误的想法),否则将无法实现。 这说明来自我建立的连接的所有传入流量都被接受。 我的意思是,原则上我开始建立联系。

将OUTPUT放到规则中时,这仅适用于有问题的设备,如果我们将设备用作路由器以允许这些连接,则必须将OUTPUT更改为FORWARD。 由于流量通过计算机但不是由计算机发起的
重新启动后,所有这些规则都将被删除,因此您必须创建脚本以使其默认启动。 但是我们将在接下来的内容中看到

希望您喜欢此信息。 在下一篇中,我将讨论Firewal的NAT,代理和脚本。


发表您的评论

您的电子邮件地址将不会被发表。 必填字段标有 *

*

*

  1. 负责数据:MiguelÁngelGatón
  2. 数据用途:控制垃圾邮件,注释管理。
  3. 合法性:您的同意
  4. 数据通讯:除非有法律义务,否则不会将数据传达给第三方。
  5. 数据存储:Occentus Networks(EU)托管的数据库
  6. 权利:您可以随时限制,恢复和删除您的信息。

  1.   罗杰里奥·平托

    这是许多企业家制造自己的防火墙所基于的基础,这就是为什么市场上有这么多品牌的嵌入式Linux防火墙的原因,有些很好,而有些则不多。

  2.   升降机

    优秀的文章。 我期待第二部分。

  3.   米尔顿

    很好的解释,它帮助我了解了我的工作的代理人。 谢谢

  4.   浮士德

    您好Jlcmux,

    太好了,我真的很喜欢,什么时候可以与对方联系?

    问候和感谢分享

    1.    @jlcmux

      感谢您的评论。

      我昨天发送了另一部分,在一天的过程中,我认为他们将发布它。

      问候。

  5.   以色列

    很好的文章朋友@ Jlcmux,我真的和他一起学习了,因为他澄清了我一段时间以来的一些疑问,顺便说一句,您不会介意分享本文的出处,即SébastienBOBILLIER,slau2s和现在看第二部分,salu2s。

    1.    @jlcmux

      您好,感谢您对以色列发表评论。

      原来,我有实体书。 但是我在Google图书上找到了此链接。 http://books.google.com.co/books?id=zxASM3ii4GYC&pg=PA356&lpg=PA356&dq=S%C3%A9bastien+BOBILLIER+Linux+%E2%80%93+Administraci%C3%B3n+del+sistema+y+explotaci%C3%B3n+de+los+servicios+de+red#v=onepage&q=

      我认为它已经完成。

  6.   Ariel 大卫之星系列

    很好的文章,我增加一个问题:如果有专用的硬件,将Linux用作路由器有什么好处? 还是只是为了运动? 我知道有专门的发行版,但我不知道它们是要抢救旧PC还是在配置上提供更大的灵活性。

    1.    @jlcmux

      好吧,我认为优缺点取决于您要实现此方案的场景。 为什么一定要不为您的房屋购买UTM或类似的东西? 也许对于一个负担不起的小企业。 它也可以作为练习,因为它可以帮助您了解所有逻辑,并且可以更好地配置专用的FWall。 除此之外,几乎所有这些设备实际上都是嵌入式Linux。

      问候。

  7.   Ariel 大卫之星系列

    您好,一个问题,您能在Linux中为网络之间的类似路由生成一个“人工”接口吗? (数据包跟踪程序样式)与虚拟机一起使用? 例如,如果我有eth0(因为我当然有一张卡),我可以创建eth1来建立另一个网络吗? 很好的老师!

    1.    拉夫

      当然,在Linux中,您可以创建虚拟接口。 如果您有eth0,则可以有eth0:0,eth0:1,eth0:2 ...等等

  8.   钦诺洛科

    很好,谢谢分享